const __vite__fileDeps = [
    "assets/ExpoEditor-DxifT3_1.js",
    "assets/index-Dr7F7vam.js",
    "assets/vendor-BOsc3Pjv.js",
    "assets/index-CDO1T3Qd.css",
    "assets/AxProgressSpinner-BVOHowrq.js",
    "assets/AxProgressSpinner-CXHou5pt.css",
    "assets/AxProjectName-Bl9u9nDZ.js",
    "assets/AxProjectName-B6l1tw5E.css",
    "assets/AxInputSearch-CBMtdAab.js",
    "assets/AxInputSearch-DhZZXicd.css",
    "assets/shortkey-ggEn3zUt.js",
    "assets/ExpoEditor-D5EhH-gf.css",
  ],
  __vite__mapDeps = (i) => i.map((i) => __vite__fileDeps[i]);
import {
  V as g,
  u as Zt,
  l as uo,
  X as po,
  Y as Kt,
  Z as ho,
  $ as mo,
  a0 as fo,
  a1 as Ft,
  a2 as Z,
  a3 as go,
  a4 as vo,
  a5 as _o,
  a6 as bo,
  a7 as yo,
  a8 as yt,
  R as xr,
  a9 as wo,
  q as at,
  aa as xo,
} from "./vendor-BOsc3Pjv.js";
import {
  b1 as Ut,
  W as Cr,
  v as T,
  b2 as Co,
  _ as Po,
  n as v,
  j as E,
  b3 as jo,
  b4 as Pr,
  b5 as ft,
  a$ as jr,
  aZ as ue,
  b6 as gt,
  b7 as kr,
  aL as ko,
  b8 as Ao,
  aJ as So,
  p as Lt,
  b9 as Qt,
  ba as Jt,
  bb as wt,
  bc as Pe,
  bd as it,
  r as $o,
  be as Me,
  aO as B,
  ac as Ar,
  bf as To,
  bg as Io,
  bh as Oo,
  aW as Eo,
  bi as Do,
  bj as ye,
  bk as Sr,
  bl as Bo,
  bm as Mo,
  bn as Ro,
  bo as Ot,
  bp as x,
  a1 as No,
  i as H,
  bq as $r,
  br as Fo,
  bs as Uo,
  z as Tr,
  bt as Lo,
  a9 as Ho,
  ar as Vo,
  m as We,
  bu as Ht,
  aB as qo,
  bv as Wo,
  bw as zo,
  bx as Go,
  H as Xo,
  by as Yo,
  bz as Zo,
  bA as Ko,
  w as Qo,
  bB as Jo,
  B as vt,
  l as es,
  bC as ts,
  a2 as rs,
  bD as os,
  e as Ir,
  aR as ss,
  o as ze,
  bE as Or,
  bF as ns,
  bG as Er,
  bH as as,
  bI as Dr,
  bJ as is,
  bK as ls,
  bL as cs,
  bM as ds,
  bN as M,
  bO as w,
  bP as y,
  bQ as lt,
  bR as Br,
  bS as Mr,
  bT as Rr,
  bU as Nr,
  bV as ne,
  bW as Fr,
  bX as us,
  bY as Ur,
  C as Vt,
  E as qt,
  bZ as et,
  b_ as ps,
  b$ as hs,
  c0 as ms,
  c1 as fs,
  c2 as gs,
  c3 as vs,
  aw as er,
  c4 as _s,
} from "./index-Dr7F7vam.js";
import { A as bs } from "./AxProgressSpinner-BVOHowrq.js";
import {
  A as _t,
  a as Lr,
  s as ys,
  b as ws,
} from "./AxProjectName-Bl9u9nDZ.js";
import { A as xs, S as tr } from "./AxInputSearch-CBMtdAab.js";
import { d as Cs } from "./shortkey-ggEn3zUt.js";
var Y = ((t) => (
  (t.ViewAt100 = "0"),
  (t.ScaleToWidth = "1"),
  (t.ScaleToFit = "2"),
  (t.ZoomMode = "3"),
  t
))(Y || {});
const Ps = () =>
    Po(
      () => import("./ExpoEditor-DxifT3_1.js"),
      __vite__mapDeps([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
    ),
  js = g.extend({
    components: { ExpoEditor: Ps },
    mixins: [Ut],
    props: { isActive: Boolean },
    data() {
      return { resourceFolder: "", resourceAxureFolder: "" };
    },
    computed: {
      project() {
        const t = this.$store.getters.current.node;
        if (t.type === Cr.Shortcut) return t;
      },
    },
    methods: {
      ready() {
        const {
          name: t,
          params: { screen: e, shortcut: r },
        } = this.$route;
        if (!e && t === T["expo.build.all"].name) {
          const o = Co(r);
          o && this.$router.push(o);
        }
      },
    },
  });
var ks = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      e.project && !e.isLicenseExpired
        ? r(
            "div",
            { staticClass: "project-build" },
            [
              r("ExpoEditor", {
                ref: "expoEditor",
                attrs: {
                  project: e.project,
                  "resource-folder": e.resourceFolder,
                  "resource-axure-folder": e.resourceAxureFolder,
                  "is-active": e.isActive,
                },
                on: { ready: e.ready },
              }),
            ],
            1
          )
        : e._e()
    );
  },
  As = [],
  Ss = v(js, ks, As, !1, null, "2d268fb3", null, null);
const $s = Ss.exports,
  Ts = { type: Object, required: !0 },
  Is = g.extend({
    components: { AxProgressSpinner: bs },
    props: { project: Ts },
    computed: {
      onDemandAllowedAndEnabled() {
        return (
          this.project.listingNode &&
          this.project.listingNode.AllowOndemand &&
          this.project.listingNode.OnDemandEnabled
        );
      },
    },
  });
var Os = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-generation" },
        [
          r("h1", { staticClass: "title" }, [
            e._v(
              " " +
                e._s(
                  e.onDemandAllowedAndEnabled
                    ? "Preparing project..."
                    : "This project is being generated"
                ) +
                " "
            ),
          ]),
          e.onDemandAllowedAndEnabled
            ? e._e()
            : r("AxProgressSpinner", {
                staticClass: "spinner",
                attrs: {
                  "spinner-color": "#8E2ACB",
                  "spinner-height": "70px",
                  "spinner-width": "70px",
                },
              }),
          e._m(0),
        ],
        1
      )
    );
  },
  Es = [
    function () {
      var t = this,
        e = t._self._c;
      return (
        t._self._setupProxy,
        e("p", [
          t._v(" This may take several minutes."),
          e("br"),
          t._v("If you have any questions, please email us at "),
          e(
            "a",
            {
              staticClass: "text-underline",
              attrs: { href: "mailto:support@axure.com" },
            },
            [t._v(" support@axure.com ")]
          ),
        ])
      );
    },
  ],
  Ds = v(Is, Os, Es, !1, null, "393cc7b3", null, null);
const Bs = Ds.exports,
  Ms = g.extend({});
var Rs = function () {
    var e = this;
    return e._self._c, e._self._setupProxy, e._m(0);
  },
  Ns = [
    function () {
      var t = this,
        e = t._self._c;
      return (
        t._self._setupProxy,
        e("div", { staticClass: "ax-project-generation" }, [
          e("h1", { staticClass: "title" }, [
            t._v(" There was an error generating the prototype "),
          ]),
          e("p", [
            t._v(" Please try uploading your file again."),
            e("br"),
            t._v("If you continue to have trouble, email us at "),
            e(
              "a",
              {
                staticClass: "text-underline",
                attrs: { href: "mailto:support@axure.com" },
              },
              [t._v(" support@axure.com ")]
            ),
            t._v(" and refer to the URL for this page. "),
          ]),
        ])
      );
    },
  ],
  Fs = v(Ms, Rs, Ns, !1, null, "d46d295c", null, null);
const Us = Fs.exports,
  Ls = g.extend({});
var Hs = function () {
    var e = this;
    return e._self._c, e._self._setupProxy, e._m(0);
  },
  Vs = [
    function () {
      var t = this,
        e = t._self._c;
      return (
        t._self._setupProxy,
        e("div", { staticClass: "ax-project-generation" }, [
          e("h1", { staticClass: "title" }, [
            t._v(" This project has been switched to Legacy Viewing "),
          ]),
          e("p", [
            e("br"),
            t._v(
              "Please open this project in Axure RP and check in or send a change to this team project to regenerate the project and Share Link. "
            ),
            e("br"),
            e("br"),
            t._v("If you need some help, email us at "),
            e(
              "a",
              {
                staticClass: "text-underline",
                attrs: { href: "mailto:support@axure.com" },
              },
              [t._v("support@axure.com")]
            ),
            t._v(". "),
          ]),
        ])
      );
    },
  ],
  qs = v(Ls, Hs, Vs, !1, null, "faaab5f5", null, null);
const Ws = qs.exports,
  zs = { type: Object, required: !0 },
  Gs = g.extend({
    components: {
      AxButton: E,
      AxProjectFileUpload: jo,
      AxProjectInfoSection: _t,
      AxProjectState: Pr,
    },
    props: { project: zs },
    data() {
      return { uploading: !1 };
    },
    computed: {
      isRpProject() {
        return ft(this.project);
      },
      isTeamProject() {
        return jr(this.project);
      },
      downloadUrl() {
        const t = this.$store.getters.prototypeUrls(this.project);
        return (t && t.download) || "";
      },
      filename() {
        return (
          (this.project.listingNode &&
            this.project.listingNode.TargetPrototypeFileName) ||
          "None"
        );
      },
      isEmpty() {
        return this.project.shortcutState === ue.Empty;
      },
    },
    methods: {
      uploadNewFile() {
        this.uploading = !0;
      },
      async projectFileUploaded() {
        (this.uploading = !1),
          await this.$store.dispatch(new gt(this.project.id));
      },
    },
  });
var Xs = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      e.isRpProject && !e.isTeamProject && !e.project.viewOnly
        ? r(
            "AxProjectInfoSection",
            {
              scopedSlots: e._u(
                [
                  {
                    key: "title",
                    fn: function () {
                      return [r("span", [e._v(" 源文件 ")])];
                    },
                    proxy: !0,
                  },
                  {
                    key: "title-actions",
                    fn: function () {
                      return [
                        e.isEmpty
                          ? e._e()
                          : r(
                              "div",
                              { staticClass: "row g-0 justify-content-end" },
                              [
                                r(
                                  "div",
                                  { staticClass: "col-auto me-1" },
                                  [
                                    e.downloadUrl && e.project.generated
                                      ? r(
                                          "AxButton",
                                          {
                                            staticClass: "btn-download",
                                            attrs: {
                                              href: e.downloadUrl,
                                              color: "light",
                                              small: "",
                                            },
                                          },
                                          [e._v(" Download ")]
                                        )
                                      : e._e(),
                                  ],
                                  1
                                ),
                                r(
                                  "div",
                                  { staticClass: "col-auto" },
                                  [
                                    e.isTeamProject
                                      ? e._e()
                                      : [
                                          r(
                                            "AxButton",
                                            {
                                              staticClass: "btn-replace",
                                              attrs: {
                                                color: "light",
                                                small: "",
                                                title: "Upload New File",
                                              },
                                              on: { click: e.uploadNewFile },
                                            },
                                            [e._v(" Replace ")]
                                          ),
                                          r("AxProjectFileUpload", {
                                            attrs: { shortcut: e.project.id },
                                            on: {
                                              upload: e.projectFileUploaded,
                                            },
                                            model: {
                                              value: e.uploading,
                                              callback: function (o) {
                                                e.uploading = o;
                                              },
                                              expression: "uploading",
                                            },
                                          }),
                                        ],
                                  ],
                                  2
                                ),
                              ]
                            ),
                      ];
                    },
                    proxy: !0,
                  },
                ],
                null,
                !1,
                1241698560
              ),
            },
            [
              r("AxProjectState", {
                attrs: { project: e.project },
                scopedSlots: e._u(
                  [
                    {
                      key: "generated",
                      fn: function () {
                        return [r("span", [e._v(e._s(e.filename))])];
                      },
                      proxy: !0,
                    },
                    {
                      key: "generation-failed",
                      fn: function () {
                        return [r("span", [e._v(e._s(e.filename))])];
                      },
                      proxy: !0,
                    },
                    {
                      key: "generating",
                      fn: function () {
                        return [r("span", [e._v(e._s(e.filename))])];
                      },
                      proxy: !0,
                    },
                    {
                      key: "empty",
                      fn: function () {
                        return [e._v(" None ")];
                      },
                      proxy: !0,
                    },
                  ],
                  null,
                  !1,
                  1266896232
                ),
              }),
            ],
            1
          )
        : e._e()
    );
  },
  Ys = [],
  Zs = v(Gs, Xs, Ys, !1, null, "9bd503d7", null, null);
const Ks = Zs.exports,
  Qs = { type: Object, required: !0 },
  Js = g.extend({
    components: { AxProjectInfoSection: _t, AxProjectState: Pr, AxDate: kr },
    props: { project: Qs },
    computed: {
      isEmpty() {
        return this.project.shortcutState === ue.Empty;
      },
      isGenerating() {
        return this.project.shortcutState === ue.Generating;
      },
      isGenerationFailed() {
        return this.project.shortcutState === ue.GenerationFailed;
      },
    },
  });
var en = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        [
          r(
            "AxProjectInfoSection",
            {
              scopedSlots: e._u([
                {
                  key: "title",
                  fn: function () {
                    return [r("span", [e._v(" 已发布 ")])];
                  },
                  proxy: !0,
                },
              ]),
            },
            [
              r("AxProjectState", {
                attrs: { project: e.project },
                scopedSlots: e._u([
                  {
                    key: "generated",
                    fn: function () {
                      return [
                        r("AxDate", {
                          attrs: { time: "", value: e.project.generated },
                        }),
                      ];
                    },
                    proxy: !0,
                  },
                ]),
              }),
            ],
            1
          ),
        ],
        1
      )
    );
  },
  tn = [],
  rn = v(Js, en, tn, !1, null, "4dc266f7", null, null);
const on = rn.exports,
  sn = { type: Object, required: !0 };
class nn extends uo.Validator {
  constructor() {
    super(),
      this.ruleFor((e) => e.value)
        .greaterThan(100)
        .withMessage("请输入大于 100 的值。");
  }
}
const rr = new nn(),
  an = g.extend({
    components: {
      AxInput: ko,
      AxProjectInfoSection: _t,
      AxSelectNative: Ao,
      AxFormErrors: So,
    },
    props: {
      project: sn,
      platform: Lt({ required: !0 }),
      bgImgUrl: { type: String, required: !1, default: "" },
    },
    data() {
      const t = [],
        e = [
          { value: Qt.Portrait, text: "Portrait" },
          { value: Qt.Landscape, text: "Landscape" },
        ],
        r = [
          { value: Jt.Left, text: "Left" },
          { value: Jt.Center, text: "Center" },
        ],
        o = [
          { value: wt.Light, text: "Light" },
          { value: wt.Dark, text: "Dark" },
        ],
        s = [
          { value: Pe.NoRepeat, text: "No Repeat" },
          { value: Pe.Repeat, text: "Repeat" },
          { value: Pe.RepeatX, text: "Repeat X" },
          { value: Pe.RepeatY, text: "Repeat Y" },
          { value: Pe.StretchToCover, text: "Stretch to Cover" },
          { value: Pe.StretchToContain, text: "Stretch to Contain" },
          {
            value: Pe.StretchHorizontalAndVertical,
            text: "Stretch Horizontally and Vertically",
          },
        ],
        n = this.$store.state;
      return {
        platformModel: it(this.platform),
        devices: t,
        orientations: e,
        webPageAlignment: r,
        mobileForegroundColors: o,
        imageRepeat: s,
        bgImgUploadUrl: `${$o(n.axShareConfig)}/expo/uploadbackgroundimg/${
          this.project.shortcut
        }`,
        customWidthErrors: [],
        customHeightErrors: [],
      };
    },
    computed: {
      expoStore() {
        return this.$store.state.expo;
      },
      isWebPlatform() {
        return this.platformModel.Type === Me.Web;
      },
      isCustomDimensions() {
        return (
          this.platformModel.Device === B.Custom ||
          this.platformModel.Device === B.Web
        );
      },
      device: {
        get() {
          return this.devices.find(
            (t) => t.value === this.platformModel.Device
          );
        },
        set(t) {
          this.clearErrors();
          const e = t.value === B.Web ? this.platformModel : this.platformModel,
            r = t.value,
            o = this.getPlatformType(r);
          (e.Device = t.value),
            (e.Type = o),
            t.dimensions !== void 0 &&
              t.dimensions !== null &&
              (e.Settings.Dimensions = t.dimensions),
            r === B.Web && (e.Settings.Dimensions.Height = 800),
            this.save();
        },
      },
      width: {
        get() {
          return this.platformModel.Settings.Dimensions.Width;
        },
        set(t) {
          this.debounceInputWidth(t);
        },
      },
      height: {
        get() {
          return this.platformModel.Settings.Dimensions.Height;
        },
        set(t) {
          this.debounceInputHeight(t);
        },
      },
      orientation: {
        get() {
          return this.platformModel.Settings.Orientation;
        },
        set(t) {
          (this.platformModel.Settings.Orientation = t), this.save();
        },
      },
      statusBarHeight: {
        get() {
          const t = this.platformModel;
          return t.StatusBarHeight === null || t.StatusBarHeight === void 0
            ? 0
            : t.StatusBarHeight;
        },
        set(t) {
          const e = this.platformModel;
          (e.StatusBarHeight = t < 0 ? 0 : t), this.save();
        },
      },
      pageAlignment: {
        get() {
          return this.platformModel.PageAlignment;
        },
        set(t) {
          (this.platformModel.PageAlignment = t), this.save();
        },
      },
      foregroundColor: {
        get() {
          const t = this.platformModel;
          return t.ForegroundColor === null || t.ForegroundColor === void 0
            ? wt.Light
            : t.ForegroundColor;
        },
        set(t) {
          (this.platformModel.ForegroundColor = t), this.save();
        },
      },
      mobileBackgroundOption: {
        get() {
          return this.platformModel.IsUsingBackgroundColor;
        },
        set(t) {
          const e = this.platformModel;
          t
            ? ((e.IsUsingBackgroundColor = !0),
              (e.BackgroundColor = this.mobileBackgroundColor))
            : (e.IsUsingBackgroundColor = !1),
            this.save();
        },
      },
      mobileBackgroundColor: {
        get() {
          const t = this.platformModel;
          return t.BackgroundColor == null ? "FFFFFF" : t.BackgroundColor;
        },
        set(t) {
          const e = this.platformModel;
          this.checkIfValidHexColor(t) &&
            ((e.BackgroundColor = t), this.save());
        },
      },
      webBackgroundOption: {
        get() {
          return this.platformModel.IsUsingBackgroundColor;
        },
        set(t) {
          const e = this.platformModel;
          t
            ? ((e.IsUsingBackgroundColor = !0),
              (e.BackgroundColor = this.webBackgroundColor))
            : (e.IsUsingBackgroundColor = !1),
            this.save();
        },
      },
      webBackgroundColor: {
        get() {
          const t = this.platformModel;
          return t.BackgroundColor == null ? "FFFFFF" : t.BackgroundColor;
        },
        set(t) {
          const e = this.platformModel;
          this.checkIfValidHexColor(t) &&
            ((e.BackgroundColor = t), this.save());
        },
      },
      webImageRepeat: {
        get() {
          return this.imageRepeat.find(
            (t) => t.value === this.platformModel.ImageRepeat
          );
        },
        set(t) {
          const e = this.platformModel;
          (e.ImageRepeat = t.value), this.save();
        },
      },
    },
    async mounted() {
      await this.loadDevices();
    },
    created() {
      (this.debounceInputWidth = Zt(this.debounceInputWidth, 1e3)),
        (this.debounceInputHeight = Zt(this.debounceInputHeight, 1e3));
    },
    methods: {
      async loadDevices() {
        const e = {
          action: async () => {
            const r = (await Eo()).map((o) => {
              const { DeviceName: s, Dimensions: n, Device: a } = o;
              let l = s;
              return (
                n && (l = `${l} (${n.Width} x ${n.Height})`),
                { text: l, value: a, dimensions: n }
              );
            });
            this.devices = r;
          },
        };
        this.$store.dispatch(new Ar(e));
      },
      debounceInputWidth(t) {
        this.customWidthErrors = [];
        const e = rr.validate({ value: t });
        if (!e.isValid) {
          this.customWidthErrors = e.errors.map((r) => r.errorMessage);
          return;
        }
        (this.platformModel.Settings.Dimensions.Width = t), this.save();
      },
      debounceInputHeight(t) {
        this.customHeightErrors = [];
        const e = rr.validate({ value: t });
        if (!e.isValid) {
          this.customHeightErrors = e.errors.map((r) => r.errorMessage);
          return;
        }
        (this.platformModel.Settings.Dimensions.Height = t), this.save();
      },
      clearErrors() {
        (this.customWidthErrors = []), (this.customHeightErrors = []);
      },
      copyDeep(t) {
        return it(t);
      },
      save() {
        const t = this.copyDeep(
          this.platformModel.Type === Me.Web
            ? this.platformModel
            : this.platformModel
        );
        this.$store.dispatch(new To(this.project.shortcut, t));
      },
      setMobileCustomColorOption() {
        this.$refs.mobileCustomColorRadioBtn.click();
      },
      setWebCustomColorOption() {
        this.$refs.webCustomColorRadioBtn.click();
      },
      handleUpload(t) {
        this.platformModel,
          this.$store.dispatch(new Io(this.project.shortcut, t));
      },
      handleDelete() {
        this.$store.dispatch(new Oo(this.project.shortcut));
      },
      getPlatformType(t) {
        switch (t) {
          case B.iPhone8:
          case B.iPhone8Plus:
          case B.iPhoneSE:
          case B.iPhone13Mini:
          case B.iPhone13And14:
          case B.iPhone14Plus:
          case B.iPhone14And15Pro:
          case B.iPhone14And15ProMax:
          case B.iPadMini8_3:
          case B.iPadPro11:
          case B.iPadPro12_9:
            return Me.MobileApple;
          case B.Web:
          case B.Auto:
            return Me.Web;
          case B.AndroidSmall:
          case B.AndroidLarge:
          case B.Custom:
          case B.SurfacePro8:
          default:
            return Me.Mobile;
        }
      },
      checkIfValidHexColor(t) {
        return (
          (t = t.toUpperCase()),
          /(^[0-9A-Fa-f]{6}$)|(^[0-9A-Fa-f]{3}$)/i.test(t)
        );
      },
    },
  });
var ln = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      e.project.isExpoProject
        ? r(
            "div",
            [
              e.expoStore
                ? r(
                    "AxProjectInfoSection",
                    {
                      scopedSlots: e._u(
                        [
                          {
                            key: "title",
                            fn: function () {
                              return [r("span", [e._v(" 项目尺寸 ")])];
                            },
                            proxy: !0,
                          },
                        ],
                        null,
                        !1,
                        81903382
                      ),
                    },
                    [
                      r(
                        "div",
                        { staticClass: "expo-project-info-platform" },
                        [
                          r(
                            "div",
                            { staticClass: "expo-project-device" },
                            [
                              r("AxSelectNative", {
                                attrs: {
                                  options: e.devices,
                                  disabled: e.project.viewOnly,
                                },
                                model: {
                                  value: e.device,
                                  callback: function (o) {
                                    e.device = o;
                                  },
                                  expression: "device",
                                },
                              }),
                            ],
                            1
                          ),
                          e.isCustomDimensions
                            ? [
                                r(
                                  "div",
                                  { staticClass: "expo-project-dimensions" },
                                  [
                                    r("span", { staticClass: "h4" }, [
                                      e._v(" Dimensions: "),
                                    ]),
                                    r("AxInput", {
                                      attrs: {
                                        placeholder: "Width",
                                        type: "number",
                                        readonly:
                                          !e.isCustomDimensions ||
                                          e.project.viewOnly,
                                      },
                                      model: {
                                        value: e.width,
                                        callback: function (o) {
                                          e.width = e._n(o);
                                        },
                                        expression: "width",
                                      },
                                    }),
                                    r("AxFormErrors", {
                                      staticClass: "ax-errors",
                                      attrs: { errors: e.customWidthErrors },
                                    }),
                                    e.isWebPlatform
                                      ? e._e()
                                      : r("AxInput", {
                                          attrs: {
                                            placeholder: "Height",
                                            type: "number",
                                            readonly:
                                              !e.isCustomDimensions ||
                                              e.project.viewOnly,
                                          },
                                          model: {
                                            value: e.height,
                                            callback: function (o) {
                                              e.height = e._n(o);
                                            },
                                            expression: "height",
                                          },
                                        }),
                                    r("AxFormErrors", {
                                      staticClass: "ax-errors",
                                      attrs: { errors: e.customHeightErrors },
                                    }),
                                  ],
                                  1
                                ),
                              ]
                            : e._e(),
                        ],
                        2
                      ),
                    ]
                  )
                : e._e(),
              e.expoStore
                ? r(
                    "AxProjectInfoSection",
                    {
                      scopedSlots: e._u(
                        [
                          {
                            key: "title",
                            fn: function () {
                              return [r("span", [e._v(" 背景颜色  ")])];
                            },
                            proxy: !0,
                          },
                        ],
                        null,
                        !1,
                        437394152
                      ),
                    },
                    [
                      e.isWebPlatform
                        ? r("div", [
                            r(
                              "div",
                              { staticClass: "colorInput" },
                              [
                                r(
                                  "span",
                                  { staticStyle: { "font-size": "20px" } },
                                  [e._v(" # ")]
                                ),
                                r("AxInput", {
                                  attrs: {
                                    maxlength: "6",
                                    readonly: e.project.viewOnly,
                                  },
                                  model: {
                                    value: e.webBackgroundColor,
                                    callback: function (o) {
                                      e.webBackgroundColor = o;
                                    },
                                    expression: "webBackgroundColor",
                                  },
                                }),
                                r("div", {
                                  staticClass: "colorPreview",
                                  style: {
                                    backgroundColor: `#${e.webBackgroundColor}`,
                                  },
                                }),
                              ],
                              1
                            ),
                          ])
                        : r("div", [
                            r("label", { staticClass: "colorOption" }, [
                              r("input", {
                                directives: [
                                  {
                                    name: "model",
                                    rawName: "v-model",
                                    value: e.mobileBackgroundOption,
                                    expression: "mobileBackgroundOption",
                                  },
                                ],
                                staticClass: "transparentRadioBtn",
                                attrs: {
                                  type: "radio",
                                  name: "mobileBackground",
                                  disabled: e.project.viewOnly,
                                },
                                domProps: {
                                  value: !1,
                                  checked: e._q(e.mobileBackgroundOption, !1),
                                },
                                on: {
                                  change: function (o) {
                                    e.mobileBackgroundOption = !1;
                                  },
                                },
                              }),
                              e._v(" 透明背景  "),
                            ]),
                            r("input", {
                              directives: [
                                {
                                  name: "model",
                                  rawName: "v-model",
                                  value: e.mobileBackgroundOption,
                                  expression: "mobileBackgroundOption",
                                },
                              ],
                              ref: "mobileCustomColorRadioBtn",
                              staticClass: "colorOption colorRadioBtn",
                              attrs: {
                                type: "radio",
                                name: "mobileBackground",
                                disabled: e.project.viewOnly,
                              },
                              domProps: {
                                value: !0,
                                checked: e._q(e.mobileBackgroundOption, !0),
                              },
                              on: {
                                change: function (o) {
                                  e.mobileBackgroundOption = !0;
                                },
                              },
                            }),
                            r(
                              "div",
                              {
                                staticClass: "colorInput",
                                on: { click: e.setMobileCustomColorOption },
                              },
                              [
                                r(
                                  "span",
                                  { staticStyle: { "font-size": "20px" } },
                                  [e._v(" # ")]
                                ),
                                r("AxInput", {
                                  attrs: {
                                    maxlength: "6",
                                    readonly: e.project.viewOnly,
                                  },
                                  model: {
                                    value: e.mobileBackgroundColor,
                                    callback: function (o) {
                                      e.mobileBackgroundColor = o;
                                    },
                                    expression: "mobileBackgroundColor",
                                  },
                                }),
                                r("div", {
                                  staticClass: "colorPreview",
                                  style: {
                                    backgroundColor: `#${e.mobileBackgroundColor}`,
                                  },
                                }),
                              ],
                              1
                            ),
                          ]),
                    ]
                  )
                : e._e(),
            ],
            1
          )
        : e._e()
    );
  },
  cn = [],
  dn = v(an, ln, cn, !1, null, "a9e22e2f", null, null);
const un = dn.exports,
  pn = g.extend({
    components: { AxButton: E, AxCopyToClipboard: Do },
    props: {
      label: { type: String, required: !1, default: "" },
      url: { type: String, required: !1, default: "" },
    },
    computed: {
      displayUrl() {
        return this.getDisplayUrl(this.url);
      },
    },
    methods: {
      getDisplayUrl(t) {
        let e = t;
        try {
          const r = new URL(t);
          if (r.searchParams.has(ye)) {
            const o = r.searchParams.get(ye);
            o &&
              o.length > 9 &&
              (e = e.replace(`${ye}=${o}`, `${ye}=${o.substring(0, 6)}...`));
          }
        } catch {}
        return Sr(e).replace(/(\/).+(.*)(?=\/)/, "/.../...");
      },
    },
  });
var hn = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-share-link" },
        [
          r(
            "div",
            { staticClass: "share-url" },
            [
              r("div", { staticClass: "share-url-label" }, [
                e._v(" " + e._s(e.label) + " "),
              ]),
              r(
                "AxButton",
                {
                  staticClass: "share-url-link",
                  attrs: {
                    color: "link",
                    href: e.url,
                    target: "_blank",
                    rel: "noopener noreferrer",
                    highlighted: "",
                    medium: "",
                  },
                },
                [e._v(" " + e._s(e.displayUrl) + " ")]
              ),
            ],
            1
          ),
          r("AxCopyToClipboard", {
            attrs: { value: e.url },
            scopedSlots: e._u([
              {
                key: "default",
                fn: function ({ copy: o, delay: s }) {
                  return [
                    r(
                      "AxButton",
                      {
                        staticClass: "share-url-action-btn",
                        attrs: { color: "light", small: "" },
                        on: { click: o },
                      },
                      [e._v(" " + e._s(s ? "已复制" : "复制") + " ")]
                    ),
                  ];
                },
              },
            ]),
          }),
        ],
        1
      )
    );
  },
  mn = [],
  fn = v(pn, hn, mn, !1, null, "91367888", null, null);
const gn = fn.exports,
  vn = g.extend({
    components: { AxButton: E },
    props: { url: { type: String, required: !1, default: "" } },
  });
var _n = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-share-link-without-player" },
        [
          r("span", [e._v(" 你也可以分享一个 ")]),
          r(
            "AxButton",
            {
              staticClass: "share-url-link",
              attrs: {
                color: "link",
                href: e.url,
                target: "_blank",
                rel: "noopener noreferrer",
                highlighted: "",
                medium: "",
              },
            },
            [e._v(" link ")]
          ),
          r("span", [e._v(" 没有原型玩家。 ")]),
        ],
        1
      )
    );
  },
  bn = [],
  yn = v(vn, _n, bn, !1, null, "defcfcba", null, null);
const wn = yn.exports,
  xn = { type: Object, required: !0 },
  Cn = g.extend({
    components: {
      AxButton: E,
      AxToggleButton: Bo,
      AxProjectInfoPassword: Lr,
      AxShareUrlCopy: gn,
      AxShareUrlWithoutPlayer: wn,
      AxCheckbox: Mo,
    },
    mixins: [ys],
    props: {
      project: xn,
      showCurrentPageToggle: { type: Boolean, default: !1 },
      currentPageToggleDefaultValue: { type: Boolean, default: !0 },
      useCurrentConfigurationToggleDefaultValue: { type: Boolean, default: !0 },
      embededAccessCodeToggleDefaultValue: { type: Boolean, required: !1 },
      showPublicLink: { type: Boolean, default: !0 },
      showMemberLink: { type: Boolean, default: !1 },
      pageId: { type: String, default: void 0 },
      page: { type: Object, default: null },
      zoomValue: { type: Number, default: 1 },
      scale: { type: String, default: Y.ViewAt100 },
      adaptiveView: { type: String, default: "" },
      commentsOpen: { type: Boolean, default: !1 },
      sitemapOpen: { type: Boolean, default: !1 },
      notesOpen: { type: Boolean, default: !1 },
      showCurrentConfigUrl: { type: Boolean, default: !0 },
      showHotspots: { type: Boolean, default: !1 },
      showComments: { type: Boolean, default: !0 },
      showNotes: { type: Boolean, default: !0 },
    },
    data() {
      return {
        activeTab: 0,
        linkToCurrentPageActive: this.showCurrentPageToggle
          ? this.currentPageToggleDefaultValue
          : !1,
        useCurrentConfiguration: this.useCurrentConfigurationToggleDefaultValue,
        embededAccessCode:
          this.embededAccessCodeToggleDefaultValue ?? this.project.accessCode,
        disableToggleShareLink: !1,
      };
    },
    computed: {
      activeTabs() {
        return [
          { type: 0, name: "分享链接", active: this.showPublicLink },
          { type: 1, name: "内部链接", active: this.showMemberLink },
        ].filter((e) => e.active);
      },
      singleTab() {
        return this.activeTabs.length === 1;
      },
      urls() {
        return this.$store.getters.prototypeUrls(this.project);
      },
      publicUrls() {
        const t = this.$store.getters.prototypeUrls(this.project);
        if (
          !this.isOverviewPage &&
          this.linkToCurrentPageActive &&
          this.pageId
        ) {
          const e = new URL(t.href),
            r = new URL(t.full),
            o = new URL(t.share),
            s = [{ key: "id", value: this.pageId }];
          this.isInspectPage &&
            Ro(this.project) &&
            s.push({ key: "g", value: x.handoff.gid.toString() });
          for (const n of s)
            e.searchParams.append(n.key, n.value),
              r.searchParams.append(n.key, n.value),
              o.searchParams.append(n.key, n.value);
          (t.href = e.href),
            (t.full = r.href),
            (t.display = this.getDisplayUrl(t.full)),
            (t.share = o.href);
        }
        return t;
      },
      memberUrls() {
        const t = this.$store.getters.prototypeUrls(this.project),
          e = this.$route.name;
        let r = {};
        if (this.isOverviewPage || !this.linkToCurrentPageActive)
          if (
            ((r.shortcut = this.project.shortcut), this.project.isExpoProject)
          ) {
            const o = this.$store.getters.currentProject;
            o.hasArtboards && (r.screen = o.artboardsOrder[0]);
          } else this.firstPage && (r.screen = this.firstPage.Id);
        else r = this.$route.params;
        if (e) {
          const o = this.$router.resolve({ name: e, params: r });
          (t.href = `${window.location.origin}${o.href}`),
            (t.full = `${window.location.origin}${o.href}`),
            (t.display = this.getDisplayUrl(t.full));
        }
        return t;
      },
      isOverviewPage() {
        return this.$route.name === T["project.overview"].name;
      },
      isInspectPage() {
        return this.$route.name === T["expo.inspect"].name;
      },
      isShareLinkTabActive() {
        return this.activeTab === 0;
      },
      isMemberLinkTabActive() {
        return this.activeTab === 1;
      },
      currentPageUrl() {
        var r;
        const t =
          this.linkToCurrentPageActive && this.page && this.page.location
            ? this.getPrototypeWithPageUrl(this.page.location.split("/").pop())
            : this.getPrototypeWithPageUrl(
                (r = this.firstPage) == null ? void 0 : r.Url
              );
        if (!t) return "";
        const e = new URL(t);
        return (
          this.project.accessCode &&
            this.embededAccessCode &&
            e.searchParams.append(ye, this.project.accessCode),
          e.href
        );
      },
      firstPage() {
        if (!this.project) return;
        const { fs: t } = this.$store.state;
        return t.firstPagesMap[this.project.id];
      },
      hasAccessCode() {
        return !!this.project.accessCode;
      },
    },
    watch: {
      linkToCurrentPageActive(t) {
        this.$emit("currentPageToggle", t);
      },
      useCurrentConfiguration(t) {
        this.$emit("useCurrentConfigurationToogle", t);
      },
      embededAccessCode(t) {
        this.$emit("embededAccessCodeToggle", t);
      },
    },
    async created() {
      await this.$store.dispatch(new gt(this.project.id));
    },
    methods: {
      async removePublicLink() {
        await this.$store.dispatch(new Ot(this.project.shortcut, !0));
      },
      projectInfoTabClick(t) {
        this.activeTab = t;
      },
      async changeShareLinkEnabled() {
        this.disableToggleShareLink = !0;
        try {
          await this.$store.dispatch(
            new Ot(this.project.shortcut, !this.project.isUserOnly)
          );
        } finally {
          this.disableToggleShareLink = !1;
        }
      },
      getDisplayUrl(t) {
        return Sr(t).replace(/(\/).+(.*)(?=\/)/, "/.../...");
      },
      getShareLinkTitle() {
        return this.hasAccessCode && this.embededAccessCode
          ? "带有访问码的分享链接"
          : "分享链接";
      },
      getShareLink() {
        const t = new URL(this.publicUrls.share);
        if (this.useCurrentConfiguration && this.showCurrentConfigUrl) {
          if (
            (t.searchParams.append("sc", this.scale),
            this.sitemapOpen || this.commentsOpen || this.notesOpen)
          ) {
            let e = t.searchParams.get("g") || "";
            this.sitemapOpen && (e += "1"),
              this.commentsOpen ? (e += "4") : this.notesOpen && (e += "2"),
              e && t.searchParams.set("g", e);
          }
          this.showHotspots &&
            t.searchParams.append(x.hotSpots.id, x.hotSpots.show),
            this.showComments ||
              t.searchParams.append(x.commentMarkers.id, x.commentMarkers.hide),
            this.showNotes ||
              t.searchParams.append(x.noteMarkers.id, x.noteMarkers.hide),
            this.adaptiveView.length > 0 &&
              this.adaptiveView !== x.adaptiveView.default &&
              t.searchParams.append(x.adaptiveView.id, this.adaptiveView);
        }
        return (
          this.hasAccessCode && this.embededAccessCode
            ? t.searchParams.has(ye) ||
              t.searchParams.append(ye, this.project.accessCode)
            : t.searchParams.delete(ye),
          t.href
        );
      },
      getMemberLink() {
        let t = this.memberUrls.full;
        if (this.useCurrentConfiguration && this.showCurrentConfigUrl) {
          let r = `${t.indexOf("?") > 0 ? "&" : "?"}scale=${this.scale}`;
          this.commentsOpen && (r += "&comments=1"),
            this.sitemapOpen && (r += "&sitemap=1"),
            this.notesOpen && (r += "&notes=1"),
            this.showHotspots && (r += `&${x.hotSpots.id}=${x.hotSpots.show}`),
            this.showComments ||
              (r += `&${x.commentMarkers.id}=${x.commentMarkers.hide}`),
            this.showNotes ||
              (r += `&${x.noteMarkers.id}=${x.noteMarkers.hide}`),
            this.adaptiveView.length > 0 &&
              this.adaptiveView !== x.adaptiveView.default &&
              (r += `&${x.adaptiveView.id}=${this.adaptiveView}`),
            (t = `${t}${r}`);
        }
        return t;
      },
      getOverviewLink() {
        const t = T["project.overview"].name,
          e = { shortcut: this.project.shortcut },
          r = this.$router.resolve({ name: t, params: e });
        return `${window.location.origin}${r.href}`;
      },
      getFirstPageMemberUrl() {
        const t = this.isOverviewPage
          ? T["expo.preview"].name
          : this.$route.name;
        if (t && this.project && this.firstPage) {
          const e = {
              shortcut: this.project.shortcut,
              screen: this.firstPage.Id,
            },
            r = this.$router.resolve({ name: t, params: e });
          return `${window.location.origin}${r.href}`;
        }
        return "";
      },
      getPrototypeWithPageUrl(t) {
        return t && this.project ? `${this.project.prototypeUrl}/${t}` : "";
      },
    },
  });
var Pn = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-info-share-link" },
        [
          e._t("header", function () {
            return [
              r(
                "ul",
                {
                  staticClass: "ax-project-share-tabs",
                  class: { "single-tab": e.singleTab },
                },
                e._l(e.activeTabs, function (o, s) {
                  return r(
                    "li",
                    {
                      key: s,
                      staticClass: "ax-project-share-tabs__item",
                      class: { "tab-active": o.type === e.activeTab },
                    },
                    [
                      r(
                        "AxButton",
                        {
                          staticClass: "tab-button",
                          attrs: { color: "link" },
                          on: {
                            click: function (n) {
                              return e.projectInfoTabClick(o.type);
                            },
                          },
                        },
                        [
                          r("div", { staticClass: "tab-link-content" }, [
                            e._v(" " + e._s(o.name) + " "),
                          ]),
                        ]
                      ),
                    ],
                    1
                  );
                }),
                0
              ),
              e.isShareLinkTabActive
                ? r("div", [
                    r(
                      "label",
                      [
                        r("span", { staticClass: "toggle-share-link__lbl" }, [
                          e._v(" 启用共享链接 "),
                        ]),
                        r("AxToggleButton", {
                          staticClass: "ms-2",
                          attrs: {
                            value: !e.project.isUserOnly,
                            large: "",
                            disabled: e.disableToggleShareLink,
                          },
                          on: { input: e.changeShareLinkEnabled },
                        }),
                      ],
                      1
                    ),
                    e.project.isUserOnly
                      ? r("div", { staticClass: "lbl-share-disabled mt-1" }, [
                          e._v(" 启用共享链接，以便轻松地与他人分享此原型 "),
                        ])
                      : e._e(),
                    e.project.isUserOnly
                      ? e._e()
                      : r(
                          "div",
                          [
                            r("AxProjectInfoPassword", {
                              attrs: { project: e.project },
                            }),
                          ],
                          1
                        ),
                  ])
                : e._e(),
            ];
          }),
          e.showPublicLink && e.isShareLinkTabActive && !e.project.isUserOnly
            ? e._t(
                "public-link",
                function () {
                  return [
                    r("AxShareUrlCopy", {
                      attrs: {
                        label: e.getShareLinkTitle(),
                        url: e.getShareLink(),
                      },
                    }),
                  ];
                },
                {
                  removePublicLink: e.removePublicLink,
                  publicUrls: e.publicUrls,
                }
              )
            : e._e(),
          e.showMemberLink && e.isMemberLinkTabActive
            ? e._t(
                "member-link",
                function () {
                  return [
                    r("AxShareUrlCopy", {
                      attrs: { label: "Member link", url: e.getMemberLink() },
                    }),
                  ];
                },
                { memberUrls: e.memberUrls }
              )
            : e._e(),
          r(
            "div",
            { staticClass: "share-link-options" },
            [
              e.showCurrentPageToggle && !e.project.isUserOnly
                ? r("AxCheckbox", {
                    staticClass: "share-link-option",
                    attrs: {
                      "input-class": "share-link-option-input",
                      "label-class": "share-link-option-label",
                      text: "链接到当前页面",
                    },
                    model: {
                      value: e.linkToCurrentPageActive,
                      callback: function (o) {
                        e.linkToCurrentPageActive = o;
                      },
                      expression: "linkToCurrentPageActive",
                    },
                  })
                : e._e(),
              e.showCurrentConfigUrl &&
              !(e.isShareLinkTabActive && e.project.isUserOnly)
                ? r("AxCheckbox", {
                    staticClass: "share-link-option",
                    attrs: {
                      "input-class": "share-link-option-input",
                      "label-class": "share-link-option-label",
                      text: "使用当前配置",
                    },
                    model: {
                      value: e.useCurrentConfiguration,
                      callback: function (o) {
                        e.useCurrentConfiguration = o;
                      },
                      expression: "useCurrentConfiguration",
                    },
                  })
                : e._e(),
              e.hasAccessCode && e.isShareLinkTabActive && !e.project.isUserOnly
                ? r("AxCheckbox", {
                    staticClass: "share-link-option",
                    attrs: {
                      "input-class": "share-link-option-input",
                      "label-class": "share-link-option-label",
                      text: "Embed access code",
                    },
                    model: {
                      value: e.embededAccessCode,
                      callback: function (o) {
                        e.embededAccessCode = o;
                      },
                      expression: "embededAccessCode",
                    },
                  })
                : e._e(),
            ],
            1
          ),
          e.isShareLinkTabActive && !e.project.isUserOnly
            ? r(
                "div",
                [
                  e.currentPageUrl
                    ? r("AxShareUrlWithoutPlayer", {
                        attrs: { url: e.currentPageUrl },
                      })
                    : e._e(),
                ],
                1
              )
            : e._e(),
          e.isMemberLinkTabActive
            ? r(
                "div",
                [
                  r("div", { staticClass: "divider" }),
                  r("AxShareUrlCopy", {
                    staticClass: "overview-link",
                    attrs: { label: "概述链接", url: e.getOverviewLink() },
                  }),
                ],
                1
              )
            : e._e(),
        ],
        2
      )
    );
  },
  jn = [],
  kn = v(Cn, Pn, jn, !1, null, "5722c497", null, null);
const Hr = kn.exports,
  An = { type: Object, required: !0 },
  Sn = g.extend({
    components: {
      AxButton: E,
      AxProjectInfoShareLink: Hr,
      AxShortcutPublicLink: No,
      AxProjectInfoPassword: Lr,
      AxIcon: H,
      AxTooltip: $r,
    },
    props: { project: An },
    data() {
      return { disableToggleShareLink: !1 };
    },
    computed: {
      isEmpty() {
        return this.project.shortcutState === ue.Empty;
      },
    },
    methods: {
      async changeShareLinkEnabled() {
        this.disableToggleShareLink = !0;
        try {
          await this.$store.dispatch(
            new Ot(this.project.shortcut, !this.project.isUserOnly)
          );
        } finally {
          this.disableToggleShareLink = !1;
        }
      },
    },
  });
var $n = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        [
          e.project.isUserOnly && e.project.viewOnly
            ? e._e()
            : r(
                "div",
                { staticClass: "section-title" },
                [
                  e._v(" 分享链接 "),
                  e.project.viewOnly
                    ? e._e()
                    : r(
                        "AxButton",
                        {
                          staticClass: "btn-download btn-toggle-share",
                          attrs: {
                            color: "light",
                            small: "",
                            disabled: e.disableToggleShareLink,
                          },
                          on: { click: e.changeShareLinkEnabled },
                        },
                        [
                          e._v(
                            " " +
                              e._s(e.project.isUserOnly ? "启用" : "禁用") +
                              " "
                          ),
                        ]
                      ),
                ],
                1
              ),
          e.project.isUserOnly
            ? e._e()
            : r("AxShortcutPublicLink", {
                staticClass: "ax-project-info__link mb-3",
                attrs: { project: e.project, full: "" },
              }),
          e.project.isUserOnly && !e.project.viewOnly
            ? r("div", { staticClass: "txt-enable-share mb-3" }, [
                e._v(" 启用共享链接，以便与非会员共享原型 "),
              ])
            : e._e(),
          !e.project.isUserOnly && !e.project.viewOnly
            ? r(
                "div",
                { staticClass: "mb-2" },
                [
                  r("AxProjectInfoPassword", {
                    staticClass: "project-pass",
                    attrs: { project: e.project },
                  }),
                ],
                1
              )
            : e._e(),
          r("div", { staticClass: "section-title" }, [e._v(" 内部链接 ")]),
          r("AxShortcutPublicLink", {
            staticClass: "ax-project-info__link",
            attrs: { project: e.project, member: "", full: "" },
          }),
        ],
        1
      )
    );
  },
  Tn = [],
  In = v(Sn, $n, Tn, !1, null, "9975c08f", null, null);
const On = In.exports,
  En = g.extend({
    components: { AxButton: E },
    data() {
      return { activeTab: 0 };
    },
    computed: {
      activeTabs() {
        return [
          { type: 0, name: "Details", active: !!this.$scopedSlots.details },
          {
            type: 1,
            name: "Project Settings",
            active: !!this.$scopedSlots.settings,
          },
        ].filter((e) => e.active);
      },
      activeDetailsTab() {
        return this.activeTab === 0;
      },
      activeSettingsTab() {
        return this.activeTab === 1;
      },
    },
    methods: {
      projectInfoTabClick(t) {
        this.activeTab = t;
      },
    },
  });
var Dn = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", [
        e.activeTabs.length > 1
          ? r(
              "ul",
              { staticClass: "ax-project-info-tabs desktop-app-no-drag" },
              e._l(e.activeTabs, function (o, s) {
                return r(
                  "li",
                  {
                    key: s,
                    staticClass: "ax-project-info-tabs__item",
                    class: { "tab-active": o.type === e.activeTab },
                  },
                  [
                    r(
                      "AxButton",
                      {
                        staticClass: "tab-button",
                        attrs: { color: "link" },
                        on: {
                          click: function (n) {
                            return e.projectInfoTabClick(o.type);
                          },
                        },
                      },
                      [
                        r("div", { staticClass: "tab-link-content" }, [
                          e._v(" " + e._s(o.name) + " "),
                        ]),
                      ]
                    ),
                  ],
                  1
                );
              }),
              0
            )
          : e._e(),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeDetailsTab,
                expression: "activeDetailsTab",
              },
            ],
          },
          [e._t("details")],
          2
        ),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeSettingsTab,
                expression: "activeSettingsTab",
              },
            ],
          },
          [e._t("settings")],
          2
        ),
      ])
    );
  },
  Bn = [],
  Mn = v(En, Dn, Bn, !1, null, "b3b3eb7e", null, null);
const Rn = Mn.exports,
  Nn = { type: Object, required: !0 },
  Fn = g.extend({
    components: {
      AxNavigationLinkFs: Fo,
      AxProjectInfoSection: _t,
      AxSharedWithWorkspace: Uo,
      AxButton: E,
      AxDialog: Tr,
      AxIcon: H,
      AxProjectInviteSettings: Lo,
    },
    props: { project: Nn },
    data() {
      return { inviteDialog: !1 };
    },
    computed: {
      workspace() {
        return this.$store.getters.findWorkspace(this.project.id);
      },
      canInviteUsers() {
        return this.rights && this.rights.usersInvite;
      },
      rights() {
        return (
          this.workspace && this.$store.getters.workspaceRights(this.workspace)
        );
      },
      workspaceSecurity() {
        var t;
        return this.$store.getters.getWorkspaceSecurity(
          (t = this.workspace) == null ? void 0 : t.id
        );
      },
    },
    async mounted() {
      this.workspace &&
        (this.workspace.listingNode ||
          (await this.$store.dispatch(new Ho(this.workspace))),
        this.workspaceSecurity ||
          (await this.$store.dispatch(new Vo(this.workspace.id))));
    },
    methods: {
      openInviteDialog() {
        this.inviteDialog = !0;
      },
      closeInviteDialog() {
        this.inviteDialog = !1;
      },
    },
  });
var Un = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        [
          e.workspace
            ? r(
                "AxProjectInfoSection",
                {
                  scopedSlots: e._u(
                    [
                      {
                        key: "title",
                        fn: function () {
                          return [r("span", [e._v(" 工作区成员 ")])];
                        },
                        proxy: !0,
                      },
                      {
                        key: "title-actions",
                        fn: function () {
                          return [
                            !e.workspace.isDefault && e.canInviteUsers
                              ? r(
                                  "AxButton",
                                  {
                                    staticClass: "btn-invite",
                                    attrs: { small: "", color: "light" },
                                    on: { click: e.openInviteDialog },
                                  },
                                  [
                                    r("AxIcon", {
                                      staticClass: "icon-plus",
                                      attrs: { name: "plus" },
                                    }),
                                    e._v(" 邀请 "),
                                  ],
                                  1
                                )
                              : e._e(),
                          ];
                        },
                        proxy: !0,
                      },
                    ],
                    null,
                    !1,
                    920344831
                  ),
                },
                [
                  r(
                    "div",
                    { staticClass: "project-info-workspace" },
                    [
                      r("AxNavigationLinkFs", {
                        attrs: { id: e.workspace.id },
                      }),
                      r(
                        "div",
                        { staticClass: "pt-1" },
                        [
                          r("AxSharedWithWorkspace", {
                            attrs: {
                              "stack-inversed": "",
                              "avatar-size": "24px",
                              "stack-expandable": !1,
                              "not-stacked-length": 6,
                              "stack-length": 0,
                              workspace: e.workspace,
                            },
                          }),
                        ],
                        1
                      ),
                    ],
                    1
                  ),
                  e.workspace.isDefault
                    ? r("div", { staticClass: "row mt-4" }, [
                        r("div", { staticClass: "col" }, [
                          r("span", { staticClass: "txt-invite" }, [
                            e._v(
                              " This project is in your private workspace. Click + Invite to create a new workspace and invite others. "
                            ),
                          ]),
                        ]),
                        r(
                          "div",
                          { staticClass: "col-auto" },
                          [
                            r(
                              "AxButton",
                              {
                                staticClass: "btn-invite",
                                attrs: { small: "", color: "light" },
                                on: { click: e.openInviteDialog },
                              },
                              [
                                r("AxIcon", {
                                  staticClass: "icon-plus",
                                  attrs: { name: "plus" },
                                }),
                                e._v(" Invite "),
                              ],
                              1
                            ),
                          ],
                          1
                        ),
                      ])
                    : e._e(),
                ]
              )
            : e._e(),
          e.inviteDialog
            ? r(
                "AxDialog",
                {
                  attrs: {
                    "content-class": "ax-users-invite-content",
                    "disable-click-away": "",
                  },
                  model: {
                    value: e.inviteDialog,
                    callback: function (o) {
                      e.inviteDialog = o;
                    },
                    expression: "inviteDialog",
                  },
                },
                [
                  r("AxProjectInviteSettings", {
                    attrs: { project: e.project },
                    on: { cancel: e.closeInviteDialog },
                  }),
                ],
                1
              )
            : e._e(),
        ],
        1
      )
    );
  },
  Ln = [],
  Hn = v(Fn, Un, Ln, !1, null, "e30238d4", null, null);
const Vn = Hn.exports,
  qn = { type: Object, required: !0 },
  Wn = g.extend({
    components: {
      AxProjectInfoDocument: Ks,
      AxProjectInfoPublished: on,
      AxProjectInfoWorkspace: Vn,
      AxProjectInfoSettings: un,
      AxProjectName: ws,
      AxProjectInfoTabs: Rn,
      AxProjectInfoShare: On,
    },
    props: { project: qn },
    data() {
      let t = 0;
      return (
        this.project &&
          this.project.listingNode &&
          (t = this.project.listingNode.FailedPagesCount),
        { AnalyticsClickEvents: We, failedPagesCount: t }
      );
    },
    computed: {
      platform() {
        const t = this.$store.getters.currentProject;
        return t ? t.platform : void 0;
      },
      bgImgUrl() {
        const t = this.$store.state.expo.projects[this.project.shortcut];
        return this.project.isExpoProject ? t.bgImgUrl : "";
      },
      isExpoReady() {
        return this.project.isExpoProject && this.platform !== void 0;
      },
      failedPagesMessage() {
        if (this.failedPagesCount === 0) return "";
        const t = this.failedPagesCount > 1 ? "页面" : "页面";
        return `(${this.failedPagesCount} ${t} 生成失败)`;
      },
    },
    watch: {
      async platform() {
        this.isExpoReady || (await this.fetchExpoProject());
      },
    },
    async created() {
      await this.fetchExpoProject();
    },
    methods: {
      async fetchExpoProject() {
        const t = this.$store.state.expo.projects[this.project.shortcut],
          e = t && t.platform;
        this.project.isExpoProject &&
          !e &&
          (await this.$store.dispatch(new Ht(this.project.id)));
      },
    },
  });
var zn = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-info" },
        [
          r("div", { staticClass: "section-title" }, [e._v("项目名称")]),
          r("AxProjectName", {
            staticClass: "w-100 h3 fw-normal",
            attrs: { project: e.project },
          }),
          r("AxProjectInfoPublished", {
            staticClass: "mb-3",
            class: { "ax-project-info__published": e.project.isUserOnly },
            attrs: { project: e.project },
          }),
          r("AxProjectInfoShare", {
            staticClass: "mb-3",
            attrs: { project: e.project },
          }),
          e.failedPagesCount > 0
            ? r("div", { staticClass: "failed-pages" }, [
                e._v(" " + e._s(e.failedPagesMessage) + " "),
              ])
            : e._e(),
          r("AxProjectInfoDocument", {
            staticClass: "project-info-document",
            attrs: { project: e.project },
          }),
          r("AxProjectInfoWorkspace", { attrs: { project: e.project } }),
          e.project.isExpoProject && e.isExpoReady
            ? r("AxProjectInfoSettings", {
                attrs: {
                  project: e.project,
                  platform: e.platform,
                  "bg-img-url": e.bgImgUrl,
                },
              })
            : e._e(),
        ],
        1
      )
    );
  },
  Gn = [],
  Xn = v(Wn, zn, Gn, !1, null, "93b5c977", null, null);
const Yn = Xn.exports;
var Zn = Object.defineProperty,
  ct = Object.getOwnPropertySymbols,
  Vr = Object.prototype.hasOwnProperty,
  qr = Object.prototype.propertyIsEnumerable,
  or = (t, e, r) =>
    e in t
      ? Zn(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r })
      : (t[e] = r),
  Ie = (t, e) => {
    for (var r in e || (e = {})) Vr.call(e, r) && or(t, r, e[r]);
    if (ct) for (var r of ct(e)) qr.call(e, r) && or(t, r, e[r]);
    return t;
  },
  Wr = (t, e) => {
    var r = {};
    for (var o in t) Vr.call(t, o) && e.indexOf(o) < 0 && (r[o] = t[o]);
    if (t != null && ct)
      for (var o of ct(t)) e.indexOf(o) < 0 && qr.call(t, o) && (r[o] = t[o]);
    return r;
  };
const zr = "[vue-draggable-plus]: ";
function Kn(t) {
  console.warn(zr + t);
}
function Qn(t) {
  console.error(zr + t);
}
function sr(t, e, r) {
  return r >= 0 && r < t.length && t.splice(r, 0, t.splice(e, 1)[0]), t;
}
function Jn(t) {
  return t.replace(/-(\w)/g, (e, r) => (r ? r.toUpperCase() : ""));
}
function ea(t) {
  return Object.keys(t).reduce(
    (e, r) => (typeof t[r] < "u" && (e[Jn(r)] = t[r]), e),
    {}
  );
}
function nr(t, e) {
  return Array.isArray(t) && t.splice(e, 1), t;
}
function ar(t, e, r) {
  return Array.isArray(t) && t.splice(e, 0, r), t;
}
function ta(t) {
  return typeof t > "u";
}
function ra(t) {
  return typeof t == "string";
}
function ir(t, e, r) {
  const o = t.children[r];
  t.insertBefore(e, o);
}
function xt(t) {
  t.parentNode && t.parentNode.removeChild(t);
}
function oa(t, e = document) {
  var r;
  let o = null;
  return (
    typeof (e == null ? void 0 : e.querySelector) == "function"
      ? (o =
          (r = e == null ? void 0 : e.querySelector) == null
            ? void 0
            : r.call(e, t))
      : (o = document.querySelector(t)),
    o || Kn(`Element not found: ${t}`),
    o
  );
}
function sa(t, e, r = null) {
  return function (...o) {
    return t.apply(r, o), e.apply(r, o);
  };
}
function na(t, e) {
  const r = Ie({}, t);
  return (
    Object.keys(e).forEach((o) => {
      r[o] ? (r[o] = sa(t[o], e[o])) : (r[o] = e[o]);
    }),
    r
  );
}
function aa(t) {
  return t instanceof HTMLElement;
}
function ia(t, e) {
  Object.keys(t).forEach((r) => {
    e(r, t[r]);
  });
}
/**!
 * Sortable 1.15.2
 * @author	RubaXa   <trash@rubaxa.org>
 * @author	owenm    <owen23355@gmail.com>
 * @license MIT
 */ function lr(t, e) {
  var r = Object.keys(t);
  if (Object.getOwnPropertySymbols) {
    var o = Object.getOwnPropertySymbols(t);
    e &&
      (o = o.filter(function (s) {
        return Object.getOwnPropertyDescriptor(t, s).enumerable;
      })),
      r.push.apply(r, o);
  }
  return r;
}
function le(t) {
  for (var e = 1; e < arguments.length; e++) {
    var r = arguments[e] != null ? arguments[e] : {};
    e % 2
      ? lr(Object(r), !0).forEach(function (o) {
          la(t, o, r[o]);
        })
      : Object.getOwnPropertyDescriptors
      ? Object.defineProperties(t, Object.getOwnPropertyDescriptors(r))
      : lr(Object(r)).forEach(function (o) {
          Object.defineProperty(t, o, Object.getOwnPropertyDescriptor(r, o));
        });
  }
  return t;
}
function tt(t) {
  "@babel/helpers - typeof";
  return (
    typeof Symbol == "function" && typeof Symbol.iterator == "symbol"
      ? (tt = function (e) {
          return typeof e;
        })
      : (tt = function (e) {
          return e &&
            typeof Symbol == "function" &&
            e.constructor === Symbol &&
            e !== Symbol.prototype
            ? "symbol"
            : typeof e;
        }),
    tt(t)
  );
}
function la(t, e, r) {
  return (
    e in t
      ? Object.defineProperty(t, e, {
          value: r,
          enumerable: !0,
          configurable: !0,
          writable: !0,
        })
      : (t[e] = r),
    t
  );
}
function he() {
  return (
    (he =
      Object.assign ||
      function (t) {
        for (var e = 1; e < arguments.length; e++) {
          var r = arguments[e];
          for (var o in r)
            Object.prototype.hasOwnProperty.call(r, o) && (t[o] = r[o]);
        }
        return t;
      }),
    he.apply(this, arguments)
  );
}
function ca(t, e) {
  if (t == null) return {};
  var r = {},
    o = Object.keys(t),
    s,
    n;
  for (n = 0; n < o.length; n++)
    (s = o[n]), !(e.indexOf(s) >= 0) && (r[s] = t[s]);
  return r;
}
function da(t, e) {
  if (t == null) return {};
  var r = ca(t, e),
    o,
    s;
  if (Object.getOwnPropertySymbols) {
    var n = Object.getOwnPropertySymbols(t);
    for (s = 0; s < n.length; s++)
      (o = n[s]),
        !(e.indexOf(o) >= 0) &&
          Object.prototype.propertyIsEnumerable.call(t, o) &&
          (r[o] = t[o]);
  }
  return r;
}
var ua = "1.15.2";
function pe(t) {
  if (typeof window < "u" && window.navigator)
    return !!navigator.userAgent.match(t);
}
var me = pe(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),
  Ge = pe(/Edge/i),
  cr = pe(/firefox/i),
  Ue = pe(/safari/i) && !pe(/chrome/i) && !pe(/android/i),
  Gr = pe(/iP(ad|od|hone)/i),
  Xr = pe(/chrome/i) && pe(/android/i),
  Yr = { capture: !1, passive: !1 };
function j(t, e, r) {
  t.addEventListener(e, r, !me && Yr);
}
function C(t, e, r) {
  t.removeEventListener(e, r, !me && Yr);
}
function dt(t, e) {
  if (e) {
    if ((e[0] === ">" && (e = e.substring(1)), t))
      try {
        if (t.matches) return t.matches(e);
        if (t.msMatchesSelector) return t.msMatchesSelector(e);
        if (t.webkitMatchesSelector) return t.webkitMatchesSelector(e);
      } catch {
        return !1;
      }
    return !1;
  }
}
function pa(t) {
  return t.host && t !== document && t.host.nodeType ? t.host : t.parentNode;
}
function ae(t, e, r, o) {
  if (t) {
    r = r || document;
    do {
      if (
        (e != null &&
          (e[0] === ">" ? t.parentNode === r && dt(t, e) : dt(t, e))) ||
        (o && t === r)
      )
        return t;
      if (t === r) break;
    } while ((t = pa(t)));
  }
  return null;
}
var dr = /\s+/g;
function K(t, e, r) {
  if (t && e)
    if (t.classList) t.classList[r ? "添加" : "删除"](e);
    else {
      var o = (" " + t.className + " ")
        .replace(dr, " ")
        .replace(" " + e + " ", " ");
      t.className = (o + (r ? " " + e : "")).replace(dr, " ");
    }
}
function m(t, e, r) {
  var o = t && t.style;
  if (o) {
    if (r === void 0)
      return (
        document.defaultView && document.defaultView.getComputedStyle
          ? (r = document.defaultView.getComputedStyle(t, ""))
          : t.currentStyle && (r = t.currentStyle),
        e === void 0 ? r : r[e]
      );
    !(e in o) && e.indexOf("webkit") === -1 && (e = "-webkit-" + e),
      (o[e] = r + (typeof r == "string" ? "" : "px"));
  }
}
function Ee(t, e) {
  var r = "";
  if (typeof t == "string") r = t;
  else
    do {
      var o = m(t, "transform");
      o && o !== "none" && (r = o + " " + r);
    } while (!e && (t = t.parentNode));
  var s =
    window.DOMMatrix ||
    window.WebKitCSSMatrix ||
    window.CSSMatrix ||
    window.MSCSSMatrix;
  return s && new s(r);
}
function Zr(t, e, r) {
  if (t) {
    var o = t.getElementsByTagName(e),
      s = 0,
      n = o.length;
    if (r) for (; s < n; s++) r(o[s], s);
    return o;
  }
  return [];
}
function ie() {
  var t = document.scrollingElement;
  return t || document.documentElement;
}
function N(t, e, r, o, s) {
  if (!(!t.getBoundingClientRect && t !== window)) {
    var n, a, l, i, d, u, p;
    if (
      (t !== window && t.parentNode && t !== ie()
        ? ((n = t.getBoundingClientRect()),
          (a = n.top),
          (l = n.left),
          (i = n.bottom),
          (d = n.right),
          (u = n.height),
          (p = n.width))
        : ((a = 0),
          (l = 0),
          (i = window.innerHeight),
          (d = window.innerWidth),
          (u = window.innerHeight),
          (p = window.innerWidth)),
      (e || r) && t !== window && ((s = s || t.parentNode), !me))
    )
      do
        if (
          s &&
          s.getBoundingClientRect &&
          (m(s, "transform") !== "none" || (r && m(s, "position") !== "static"))
        ) {
          var k = s.getBoundingClientRect();
          (a -= k.top + parseInt(m(s, "border-top-width"))),
            (l -= k.left + parseInt(m(s, "border-left-width"))),
            (i = a + n.height),
            (d = l + n.width);
          break;
        }
      while ((s = s.parentNode));
    if (o && t !== window) {
      var h = Ee(s || t),
        I = h && h.a,
        P = h && h.d;
      h && ((a /= P), (l /= I), (p /= I), (u /= P), (i = a + u), (d = l + p));
    }
    return { top: a, left: l, bottom: i, right: d, width: p, height: u };
  }
}
function ur(t, e, r) {
  for (var o = we(t, !0), s = N(t)[e]; o; ) {
    var n = N(o)[r],
      a = void 0;
    if (((a = s >= n), !a)) return o;
    if (o === ie()) break;
    o = we(o, !1);
  }
  return !1;
}
function De(t, e, r, o) {
  for (var s = 0, n = 0, a = t.children; n < a.length; ) {
    if (
      a[n].style.display !== "none" &&
      a[n] !== f.ghost &&
      (o || a[n] !== f.dragged) &&
      ae(a[n], r.draggable, t, !1)
    ) {
      if (s === e) return a[n];
      s++;
    }
    n++;
  }
  return null;
}
function Wt(t, e) {
  for (
    var r = t.lastElementChild;
    r && (r === f.ghost || m(r, "display") === "none" || (e && !dt(r, e)));

  )
    r = r.previousElementSibling;
  return r || null;
}
function re(t, e) {
  var r = 0;
  if (!t || !t.parentNode) return -1;
  for (; (t = t.previousElementSibling); )
    t.nodeName.toUpperCase() !== "TEMPLATE" &&
      t !== f.clone &&
      (!e || dt(t, e)) &&
      r++;
  return r;
}
function pr(t) {
  var e = 0,
    r = 0,
    o = ie();
  if (t)
    do {
      var s = Ee(t),
        n = s.a,
        a = s.d;
      (e += t.scrollLeft * n), (r += t.scrollTop * a);
    } while (t !== o && (t = t.parentNode));
  return [e, r];
}
function ha(t, e) {
  for (var r in t)
    if (t.hasOwnProperty(r)) {
      for (var o in e)
        if (e.hasOwnProperty(o) && e[o] === t[r][o]) return Number(r);
    }
  return -1;
}
function we(t, e) {
  if (!t || !t.getBoundingClientRect) return ie();
  var r = t,
    o = !1;
  do
    if (r.clientWidth < r.scrollWidth || r.clientHeight < r.scrollHeight) {
      var s = m(r);
      if (
        (r.clientWidth < r.scrollWidth &&
          (s.overflowX == "auto" || s.overflowX == "scroll")) ||
        (r.clientHeight < r.scrollHeight &&
          (s.overflowY == "auto" || s.overflowY == "scroll"))
      ) {
        if (!r.getBoundingClientRect || r === document.body) return ie();
        if (o || e) return r;
        o = !0;
      }
    }
  while ((r = r.parentNode));
  return ie();
}
function ma(t, e) {
  if (t && e) for (var r in e) e.hasOwnProperty(r) && (t[r] = e[r]);
  return t;
}
function Ct(t, e) {
  return (
    Math.round(t.top) === Math.round(e.top) &&
    Math.round(t.left) === Math.round(e.left) &&
    Math.round(t.height) === Math.round(e.height) &&
    Math.round(t.width) === Math.round(e.width)
  );
}
var Le;
function Kr(t, e) {
  return function () {
    if (!Le) {
      var r = arguments,
        o = this;
      r.length === 1 ? t.call(o, r[0]) : t.apply(o, r),
        (Le = setTimeout(function () {
          Le = void 0;
        }, e));
    }
  };
}
function fa() {
  clearTimeout(Le), (Le = void 0);
}
function Qr(t, e, r) {
  (t.scrollLeft += e), (t.scrollTop += r);
}
function Jr(t) {
  var e = window.Polymer,
    r = window.jQuery || window.Zepto;
  return e && e.dom
    ? e.dom(t).cloneNode(!0)
    : r
    ? r(t).clone(!0)[0]
    : t.cloneNode(!0);
}
function eo(t, e, r) {
  var o = {};
  return (
    Array.from(t.children).forEach(function (s) {
      var n, a, l, i;
      if (!(!ae(s, e.draggable, t, !1) || s.animated || s === r)) {
        var d = N(s);
        (o.left = Math.min(
          (n = o.left) !== null && n !== void 0 ? n : 1 / 0,
          d.left
        )),
          (o.top = Math.min(
            (a = o.top) !== null && a !== void 0 ? a : 1 / 0,
            d.top
          )),
          (o.right = Math.max(
            (l = o.right) !== null && l !== void 0 ? l : -1 / 0,
            d.right
          )),
          (o.bottom = Math.max(
            (i = o.bottom) !== null && i !== void 0 ? i : -1 / 0,
            d.bottom
          ));
      }
    }),
    (o.width = o.right - o.left),
    (o.height = o.bottom - o.top),
    (o.x = o.left),
    (o.y = o.top),
    o
  );
}
var J = "Sortable" + new Date().getTime();
function ga() {
  var t = [],
    e;
  return {
    captureAnimationState: function () {
      if (((t = []), !!this.options.animation)) {
        var r = [].slice.call(this.el.children);
        r.forEach(function (o) {
          if (!(m(o, "display") === "none" || o === f.ghost)) {
            t.push({ target: o, rect: N(o) });
            var s = le({}, t[t.length - 1].rect);
            if (o.thisAnimationDuration) {
              var n = Ee(o, !0);
              n && ((s.top -= n.f), (s.left -= n.e));
            }
            o.fromRect = s;
          }
        });
      }
    },
    addAnimationState: function (r) {
      t.push(r);
    },
    removeAnimationState: function (r) {
      t.splice(ha(t, { target: r }), 1);
    },
    animateAll: function (r) {
      var o = this;
      if (!this.options.animation) {
        clearTimeout(e), typeof r == "function" && r();
        return;
      }
      var s = !1,
        n = 0;
      t.forEach(function (a) {
        var l = 0,
          i = a.target,
          d = i.fromRect,
          u = N(i),
          p = i.prevFromRect,
          k = i.prevToRect,
          h = a.rect,
          I = Ee(i, !0);
        I && ((u.top -= I.f), (u.left -= I.e)),
          (i.toRect = u),
          i.thisAnimationDuration &&
            Ct(p, u) &&
            !Ct(d, u) &&
            (h.top - u.top) / (h.left - u.left) ===
              (d.top - u.top) / (d.left - u.left) &&
            (l = _a(h, p, k, o.options)),
          Ct(u, d) ||
            ((i.prevFromRect = d),
            (i.prevToRect = u),
            l || (l = o.options.animation),
            o.animate(i, h, u, l)),
          l &&
            ((s = !0),
            (n = Math.max(n, l)),
            clearTimeout(i.animationResetTimer),
            (i.animationResetTimer = setTimeout(function () {
              (i.animationTime = 0),
                (i.prevFromRect = null),
                (i.fromRect = null),
                (i.prevToRect = null),
                (i.thisAnimationDuration = null);
            }, l)),
            (i.thisAnimationDuration = l));
      }),
        clearTimeout(e),
        s
          ? (e = setTimeout(function () {
              typeof r == "function" && r();
            }, n))
          : typeof r == "function" && r(),
        (t = []);
    },
    animate: function (r, o, s, n) {
      if (n) {
        m(r, "transition", ""), m(r, "transform", "");
        var a = Ee(this.el),
          l = a && a.a,
          i = a && a.d,
          d = (o.left - s.left) / (l || 1),
          u = (o.top - s.top) / (i || 1);
        (r.animatingX = !!d),
          (r.animatingY = !!u),
          m(r, "transform", "translate3d(" + d + "px," + u + "px,0)"),
          (this.forRepaintDummy = va(r)),
          m(
            r,
            "transition",
            "transform " +
              n +
              "ms" +
              (this.options.easing ? " " + this.options.easing : "")
          ),
          m(r, "transform", "translate3d(0,0,0)"),
          typeof r.animated == "number" && clearTimeout(r.animated),
          (r.animated = setTimeout(function () {
            m(r, "transition", ""),
              m(r, "transform", ""),
              (r.animated = !1),
              (r.animatingX = !1),
              (r.animatingY = !1);
          }, n));
      }
    },
  };
}
function va(t) {
  return t.offsetWidth;
}
function _a(t, e, r, o) {
  return (
    (Math.sqrt(Math.pow(e.top - t.top, 2) + Math.pow(e.left - t.left, 2)) /
      Math.sqrt(Math.pow(e.top - r.top, 2) + Math.pow(e.left - r.left, 2))) *
    o.animation
  );
}
var Se = [],
  Pt = { initializeByDefault: !0 },
  Xe = {
    mount: function (t) {
      for (var e in Pt) Pt.hasOwnProperty(e) && !(e in t) && (t[e] = Pt[e]);
      Se.forEach(function (r) {
        if (r.pluginName === t.pluginName)
          throw "Sortable: Cannot mount plugin ".concat(
            t.pluginName,
            " more than once"
          );
      }),
        Se.push(t);
    },
    pluginEvent: function (t, e, r) {
      var o = this;
      (this.eventCanceled = !1),
        (r.cancel = function () {
          o.eventCanceled = !0;
        });
      var s = t + "Global";
      Se.forEach(function (n) {
        e[n.pluginName] &&
          (e[n.pluginName][s] && e[n.pluginName][s](le({ sortable: e }, r)),
          e.options[n.pluginName] &&
            e[n.pluginName][t] &&
            e[n.pluginName][t](le({ sortable: e }, r)));
      });
    },
    initializePlugins: function (t, e, r, o) {
      Se.forEach(function (a) {
        var l = a.pluginName;
        if (!(!t.options[l] && !a.initializeByDefault)) {
          var i = new a(t, e, t.options);
          (i.sortable = t),
            (i.options = t.options),
            (t[l] = i),
            he(r, i.defaults);
        }
      });
      for (var s in t.options)
        if (t.options.hasOwnProperty(s)) {
          var n = this.modifyOption(t, s, t.options[s]);
          typeof n < "u" && (t.options[s] = n);
        }
    },
    getEventProperties: function (t, e) {
      var r = {};
      return (
        Se.forEach(function (o) {
          typeof o.eventProperties == "function" &&
            he(r, o.eventProperties.call(e[o.pluginName], t));
        }),
        r
      );
    },
    modifyOption: function (t, e, r) {
      var o;
      return (
        Se.forEach(function (s) {
          t[s.pluginName] &&
            s.optionListeners &&
            typeof s.optionListeners[e] == "function" &&
            (o = s.optionListeners[e].call(t[s.pluginName], r));
        }),
        o
      );
    },
  };
function ba(t) {
  var e = t.sortable,
    r = t.rootEl,
    o = t.name,
    s = t.targetEl,
    n = t.cloneEl,
    a = t.toEl,
    l = t.fromEl,
    i = t.oldIndex,
    d = t.newIndex,
    u = t.oldDraggableIndex,
    p = t.newDraggableIndex,
    k = t.originalEvent,
    h = t.putSortable,
    I = t.extraEventProperties;
  if (((e = e || (r && r[J])), !!e)) {
    var P,
      z = e.options,
      U = "on" + o.charAt(0).toUpperCase() + o.substr(1);
    window.CustomEvent && !me && !Ge
      ? (P = new CustomEvent(o, { bubbles: !0, cancelable: !0 }))
      : ((P = document.createEvent("Event")), P.initEvent(o, !0, !0)),
      (P.to = a || r),
      (P.from = l || r),
      (P.item = s || r),
      (P.clone = n),
      (P.oldIndex = i),
      (P.newIndex = d),
      (P.oldDraggableIndex = u),
      (P.newDraggableIndex = p),
      (P.originalEvent = k),
      (P.pullMode = h ? h.lastPutMode : void 0);
    var ee = le(le({}, I), Xe.getEventProperties(o, e));
    for (var S in ee) P[S] = ee[S];
    r && r.dispatchEvent(P), z[U] && z[U].call(e, P);
  }
}
var ya = ["evt"],
  X = function (t, e) {
    var r = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {},
      o = r.evt,
      s = da(r, ya);
    Xe.pluginEvent.bind(f)(
      t,
      e,
      le(
        {
          dragEl: c,
          parentEl: D,
          ghostEl: _,
          rootEl: $,
          nextEl: Ae,
          lastDownEl: rt,
          cloneEl: O,
          cloneHidden: be,
          dragStarted: Re,
          putSortable: L,
          activeSortable: f.active,
          originalEvent: o,
          oldIndex: Oe,
          oldDraggableIndex: He,
          newIndex: Q,
          newDraggableIndex: _e,
          hideGhostForTarget: so,
          unhideGhostForTarget: no,
          cloneNowHidden: function () {
            be = !0;
          },
          cloneNowShown: function () {
            be = !1;
          },
          dispatchSortableEvent: function (n) {
            W({ sortable: e, name: n, originalEvent: o });
          },
        },
        s
      )
    );
  };
function W(t) {
  ba(
    le(
      {
        putSortable: L,
        cloneEl: O,
        targetEl: c,
        rootEl: $,
        oldIndex: Oe,
        oldDraggableIndex: He,
        newIndex: Q,
        newDraggableIndex: _e,
      },
      t
    )
  );
}
var c,
  D,
  _,
  $,
  Ae,
  rt,
  O,
  be,
  Oe,
  Q,
  He,
  _e,
  Ze,
  L,
  Te = !1,
  ut = !1,
  pt = [],
  je,
  se,
  jt,
  kt,
  hr,
  mr,
  Re,
  $e,
  Ve,
  qe = !1,
  Ke = !1,
  ot,
  V,
  At = [],
  Et = !1,
  ht = [],
  bt = typeof document < "u",
  Qe = Gr,
  fr = Ge || me ? "cssFloat" : "float",
  wa = bt && !Xr && !Gr && "draggable" in document.createElement("div"),
  to = (function () {
    if (bt) {
      if (me) return !1;
      var t = document.createElement("x");
      return (
        (t.style.cssText = "pointer-events:auto"),
        t.style.pointerEvents === "auto"
      );
    }
  })(),
  ro = function (t, e) {
    var r = m(t),
      o =
        parseInt(r.width) -
        parseInt(r.paddingLeft) -
        parseInt(r.paddingRight) -
        parseInt(r.borderLeftWidth) -
        parseInt(r.borderRightWidth),
      s = De(t, 0, e),
      n = De(t, 1, e),
      a = s && m(s),
      l = n && m(n),
      i = a && parseInt(a.marginLeft) + parseInt(a.marginRight) + N(s).width,
      d = l && parseInt(l.marginLeft) + parseInt(l.marginRight) + N(n).width;
    if (r.display === "flex")
      return r.flexDirection === "column" ||
        r.flexDirection === "column-reverse"
        ? "vertical"
        : "horizontal";
    if (r.display === "grid")
      return r.gridTemplateColumns.split(" ").length <= 1
        ? "vertical"
        : "horizontal";
    if (s && a.float && a.float !== "none") {
      var u = a.float === "left" ? "left" : "right";
      return n && (l.clear === "both" || l.clear === u)
        ? "vertical"
        : "horizontal";
    }
    return s &&
      (a.display === "block" ||
        a.display === "flex" ||
        a.display === "table" ||
        a.display === "grid" ||
        (i >= o && r[fr] === "none") ||
        (n && r[fr] === "none" && i + d > o))
      ? "vertical"
      : "horizontal";
  },
  xa = function (t, e, r) {
    var o = r ? t.left : t.top,
      s = r ? t.right : t.bottom,
      n = r ? t.width : t.height,
      a = r ? e.left : e.top,
      l = r ? e.right : e.bottom,
      i = r ? e.width : e.height;
    return o === a || s === l || o + n / 2 === a + i / 2;
  },
  Ca = function (t, e) {
    var r;
    return (
      pt.some(function (o) {
        var s = o[J].options.emptyInsertThreshold;
        if (!(!s || Wt(o))) {
          var n = N(o),
            a = t >= n.left - s && t <= n.right + s,
            l = e >= n.top - s && e <= n.bottom + s;
          if (a && l) return (r = o);
        }
      }),
      r
    );
  },
  oo = function (t) {
    function e(s, n) {
      return function (a, l, i, d) {
        var u =
          a.options.group.name &&
          l.options.group.name &&
          a.options.group.name === l.options.group.name;
        if (s == null && (n || u)) return !0;
        if (s == null || s === !1) return !1;
        if (n && s === "clone") return s;
        if (typeof s == "function") return e(s(a, l, i, d), n)(a, l, i, d);
        var p = (n ? a : l).options.group.name;
        return (
          s === !0 ||
          (typeof s == "string" && s === p) ||
          (s.join && s.indexOf(p) > -1)
        );
      };
    }
    var r = {},
      o = t.group;
    (!o || tt(o) != "object") && (o = { name: o }),
      (r.name = o.name),
      (r.checkPull = e(o.pull, !0)),
      (r.checkPut = e(o.put)),
      (r.revertClone = o.revertClone),
      (t.group = r);
  },
  so = function () {
    !to && _ && m(_, "display", "none");
  },
  no = function () {
    !to && _ && m(_, "display", "");
  };
bt &&
  !Xr &&
  document.addEventListener(
    "click",
    function (t) {
      if (ut)
        return (
          t.preventDefault(),
          t.stopPropagation && t.stopPropagation(),
          t.stopImmediatePropagation && t.stopImmediatePropagation(),
          (ut = !1),
          !1
        );
    },
    !0
  );
var ke = function (t) {
    if (c) {
      t = t.touches ? t.touches[0] : t;
      var e = Ca(t.clientX, t.clientY);
      if (e) {
        var r = {};
        for (var o in t) t.hasOwnProperty(o) && (r[o] = t[o]);
        (r.target = r.rootEl = e),
          (r.preventDefault = void 0),
          (r.stopPropagation = void 0),
          e[J]._onDragOver(r);
      }
    }
  },
  Pa = function (t) {
    c && c.parentNode[J]._isOutsideThisEl(t.target);
  };
function f(t, e) {
  if (!(t && t.nodeType && t.nodeType === 1))
    throw "Sortable: `el` must be an HTMLElement, not ".concat(
      {}.toString.call(t)
    );
  (this.el = t), (this.options = e = he({}, e)), (t[J] = this);
  var r = {
    group: null,
    sort: !0,
    disabled: !1,
    store: null,
    handle: null,
    draggable: /^[uo]l$/i.test(t.nodeName) ? ">li" : ">*",
    swapThreshold: 1,
    invertSwap: !1,
    invertedSwapThreshold: null,
    removeCloneOnHide: !0,
    direction: function () {
      return ro(t, this.options);
    },
    ghostClass: "sortable-ghost",
    chosenClass: "sortable-chosen",
    dragClass: "sortable-drag",
    ignore: "a, img",
    filter: null,
    preventOnFilter: !0,
    animation: 0,
    easing: null,
    setData: function (n, a) {
      n.setData("Text", a.textContent);
    },
    dropBubble: !1,
    dragoverBubble: !1,
    dataIdAttr: "data-id",
    delay: 0,
    delayOnTouchOnly: !1,
    touchStartThreshold:
      (Number.parseInt ? Number : window).parseInt(
        window.devicePixelRatio,
        10
      ) || 1,
    forceFallback: !1,
    fallbackClass: "sortable-fallback",
    fallbackOnBody: !1,
    fallbackTolerance: 0,
    fallbackOffset: { x: 0, y: 0 },
    supportPointer: f.supportPointer !== !1 && "PointerEvent" in window && !Ue,
    emptyInsertThreshold: 5,
  };
  Xe.initializePlugins(this, t, r);
  for (var o in r) !(o in e) && (e[o] = r[o]);
  oo(e);
  for (var s in this)
    s.charAt(0) === "_" &&
      typeof this[s] == "function" &&
      (this[s] = this[s].bind(this));
  (this.nativeDraggable = e.forceFallback ? !1 : wa),
    this.nativeDraggable && (this.options.touchStartThreshold = 1),
    e.supportPointer
      ? j(t, "pointerdown", this._onTapStart)
      : (j(t, "mousedown", this._onTapStart),
        j(t, "touchstart", this._onTapStart)),
    this.nativeDraggable && (j(t, "dragover", this), j(t, "dragenter", this)),
    pt.push(this.el),
    e.store && e.store.get && this.sort(e.store.get(this) || []),
    he(this, ga());
}
f.prototype = {
  constructor: f,
  _isOutsideThisEl: function (t) {
    !this.el.contains(t) && t !== this.el && ($e = null);
  },
  _getDirection: function (t, e) {
    return typeof this.options.direction == "function"
      ? this.options.direction.call(this, t, e, c)
      : this.options.direction;
  },
  _onTapStart: function (t) {
    if (t.cancelable) {
      var e = this,
        r = this.el,
        o = this.options,
        s = o.preventOnFilter,
        n = t.type,
        a =
          (t.touches && t.touches[0]) ||
          (t.pointerType && t.pointerType === "touch" && t),
        l = (a || t).target,
        i =
          (t.target.shadowRoot &&
            ((t.path && t.path[0]) ||
              (t.composedPath && t.composedPath()[0]))) ||
          l,
        d = o.filter;
      if (
        (Oa(r),
        !c &&
          !(
            (/mousedown|pointerdown/.test(n) && t.button !== 0) ||
            o.disabled
          ) &&
          !i.isContentEditable &&
          !(
            !this.nativeDraggable &&
            Ue &&
            l &&
            l.tagName.toUpperCase() === "SELECT"
          ) &&
          ((l = ae(l, o.draggable, r, !1)), !(l && l.animated) && rt !== l))
      ) {
        if (((Oe = re(l)), (He = re(l, o.draggable)), typeof d == "function")) {
          if (d.call(this, t, l, this)) {
            W({
              sortable: e,
              rootEl: i,
              name: "filter",
              targetEl: l,
              toEl: r,
              fromEl: r,
            }),
              X("filter", e, { evt: t }),
              s && t.cancelable && t.preventDefault();
            return;
          }
        } else if (
          d &&
          ((d = d.split(",").some(function (u) {
            if (((u = ae(i, u.trim(), r, !1)), u))
              return (
                W({
                  sortable: e,
                  rootEl: u,
                  name: "filter",
                  targetEl: l,
                  fromEl: r,
                  toEl: r,
                }),
                X("filter", e, { evt: t }),
                !0
              );
          })),
          d)
        ) {
          s && t.cancelable && t.preventDefault();
          return;
        }
        (o.handle && !ae(i, o.handle, r, !1)) ||
          this._prepareDragStart(t, a, l);
      }
    }
  },
  _prepareDragStart: function (t, e, r) {
    var o = this,
      s = o.el,
      n = o.options,
      a = s.ownerDocument,
      l;
    if (r && !c && r.parentNode === s) {
      var i = N(r);
      if (
        (($ = s),
        (c = r),
        (D = c.parentNode),
        (Ae = c.nextSibling),
        (rt = r),
        (Ze = n.group),
        (f.dragged = c),
        (je = {
          target: c,
          clientX: (e || t).clientX,
          clientY: (e || t).clientY,
        }),
        (hr = je.clientX - i.left),
        (mr = je.clientY - i.top),
        (this._lastX = (e || t).clientX),
        (this._lastY = (e || t).clientY),
        (c.style["will-change"] = "all"),
        (l = function () {
          if ((X("delayEnded", o, { evt: t }), f.eventCanceled)) {
            o._onDrop();
            return;
          }
          o._disableDelayedDragEvents(),
            !cr && o.nativeDraggable && (c.draggable = !0),
            o._triggerDragStart(t, e),
            W({ sortable: o, name: "choose", originalEvent: t }),
            K(c, n.chosenClass, !0);
        }),
        n.ignore.split(",").forEach(function (d) {
          Zr(c, d.trim(), St);
        }),
        j(a, "dragover", ke),
        j(a, "mousemove", ke),
        j(a, "touchmove", ke),
        j(a, "mouseup", o._onDrop),
        j(a, "touchend", o._onDrop),
        j(a, "touchcancel", o._onDrop),
        cr &&
          this.nativeDraggable &&
          ((this.options.touchStartThreshold = 4), (c.draggable = !0)),
        X("delayStart", this, { evt: t }),
        n.delay &&
          (!n.delayOnTouchOnly || e) &&
          (!this.nativeDraggable || !(Ge || me)))
      ) {
        if (f.eventCanceled) {
          this._onDrop();
          return;
        }
        j(a, "mouseup", o._disableDelayedDrag),
          j(a, "touchend", o._disableDelayedDrag),
          j(a, "touchcancel", o._disableDelayedDrag),
          j(a, "mousemove", o._delayedDragTouchMoveHandler),
          j(a, "touchmove", o._delayedDragTouchMoveHandler),
          n.supportPointer &&
            j(a, "pointermove", o._delayedDragTouchMoveHandler),
          (o._dragStartTimer = setTimeout(l, n.delay));
      } else l();
    }
  },
  _delayedDragTouchMoveHandler: function (t) {
    var e = t.touches ? t.touches[0] : t;
    Math.max(
      Math.abs(e.clientX - this._lastX),
      Math.abs(e.clientY - this._lastY)
    ) >=
      Math.floor(
        this.options.touchStartThreshold /
          ((this.nativeDraggable && window.devicePixelRatio) || 1)
      ) && this._disableDelayedDrag();
  },
  _disableDelayedDrag: function () {
    c && St(c),
      clearTimeout(this._dragStartTimer),
      this._disableDelayedDragEvents();
  },
  _disableDelayedDragEvents: function () {
    var t = this.el.ownerDocument;
    C(t, "mouseup", this._disableDelayedDrag),
      C(t, "touchend", this._disableDelayedDrag),
      C(t, "touchcancel", this._disableDelayedDrag),
      C(t, "mousemove", this._delayedDragTouchMoveHandler),
      C(t, "touchmove", this._delayedDragTouchMoveHandler),
      C(t, "pointermove", this._delayedDragTouchMoveHandler);
  },
  _triggerDragStart: function (t, e) {
    (e = e || (t.pointerType == "touch" && t)),
      !this.nativeDraggable || e
        ? this.options.supportPointer
          ? j(document, "pointermove", this._onTouchMove)
          : e
          ? j(document, "touchmove", this._onTouchMove)
          : j(document, "mousemove", this._onTouchMove)
        : (j(c, "dragend", this), j($, "dragstart", this._onDragStart));
    try {
      document.selection
        ? st(function () {
            document.selection.empty();
          })
        : window.getSelection().removeAllRanges();
    } catch {}
  },
  _dragStarted: function (t, e) {
    if (((Te = !1), $ && c)) {
      X("dragStarted", this, { evt: e }),
        this.nativeDraggable && j(document, "dragover", Pa);
      var r = this.options;
      !t && K(c, r.dragClass, !1),
        K(c, r.ghostClass, !0),
        (f.active = this),
        t && this._appendGhost(),
        W({ sortable: this, name: "start", originalEvent: e });
    } else this._nulling();
  },
  _emulateDragOver: function () {
    if (se) {
      (this._lastX = se.clientX), (this._lastY = se.clientY), so();
      for (
        var t = document.elementFromPoint(se.clientX, se.clientY), e = t;
        t &&
        t.shadowRoot &&
        ((t = t.shadowRoot.elementFromPoint(se.clientX, se.clientY)), t !== e);

      )
        e = t;
      if ((c.parentNode[J]._isOutsideThisEl(t), e))
        do {
          if (e[J]) {
            var r = void 0;
            if (
              ((r = e[J]._onDragOver({
                clientX: se.clientX,
                clientY: se.clientY,
                target: t,
                rootEl: e,
              })),
              r && !this.options.dragoverBubble)
            )
              break;
          }
          t = e;
        } while ((e = e.parentNode));
      no();
    }
  },
  _onTouchMove: function (t) {
    if (je) {
      var e = this.options,
        r = e.fallbackTolerance,
        o = e.fallbackOffset,
        s = t.touches ? t.touches[0] : t,
        n = _ && Ee(_, !0),
        a = _ && n && n.a,
        l = _ && n && n.d,
        i = Qe && V && pr(V),
        d =
          (s.clientX - je.clientX + o.x) / (a || 1) +
          (i ? i[0] - At[0] : 0) / (a || 1),
        u =
          (s.clientY - je.clientY + o.y) / (l || 1) +
          (i ? i[1] - At[1] : 0) / (l || 1);
      if (!f.active && !Te) {
        if (
          r &&
          Math.max(
            Math.abs(s.clientX - this._lastX),
            Math.abs(s.clientY - this._lastY)
          ) < r
        )
          return;
        this._onDragStart(t, !0);
      }
      if (_) {
        n
          ? ((n.e += d - (jt || 0)), (n.f += u - (kt || 0)))
          : (n = { a: 1, b: 0, c: 0, d: 1, e: d, f: u });
        var p = "matrix("
          .concat(n.a, ",")
          .concat(n.b, ",")
          .concat(n.c, ",")
          .concat(n.d, ",")
          .concat(n.e, ",")
          .concat(n.f, ")");
        m(_, "webkitTransform", p),
          m(_, "mozTransform", p),
          m(_, "msTransform", p),
          m(_, "transform", p),
          (jt = d),
          (kt = u),
          (se = s);
      }
      t.cancelable && t.preventDefault();
    }
  },
  _appendGhost: function () {
    if (!_) {
      var t = this.options.fallbackOnBody ? document.body : $,
        e = N(c, !0, Qe, !0, t),
        r = this.options;
      if (Qe) {
        for (
          V = t;
          m(V, "position") === "static" &&
          m(V, "transform") === "none" &&
          V !== document;

        )
          V = V.parentNode;
        V !== document.body && V !== document.documentElement
          ? (V === document && (V = ie()),
            (e.top += V.scrollTop),
            (e.left += V.scrollLeft))
          : (V = ie()),
          (At = pr(V));
      }
      (_ = c.cloneNode(!0)),
        K(_, r.ghostClass, !1),
        K(_, r.fallbackClass, !0),
        K(_, r.dragClass, !0),
        m(_, "transition", ""),
        m(_, "transform", ""),
        m(_, "box-sizing", "border-box"),
        m(_, "margin", 0),
        m(_, "top", e.top),
        m(_, "left", e.left),
        m(_, "width", e.width),
        m(_, "height", e.height),
        m(_, "opacity", "0.8"),
        m(_, "position", Qe ? "absolute" : "fixed"),
        m(_, "zIndex", "100000"),
        m(_, "pointerEvents", "none"),
        (f.ghost = _),
        t.appendChild(_),
        m(
          _,
          "transform-origin",
          (hr / parseInt(_.style.width)) * 100 +
            "% " +
            (mr / parseInt(_.style.height)) * 100 +
            "%"
        );
    }
  },
  _onDragStart: function (t, e) {
    var r = this,
      o = t.dataTransfer,
      s = r.options;
    if ((X("dragStart", this, { evt: t }), f.eventCanceled)) {
      this._onDrop();
      return;
    }
    X("setupClone", this),
      f.eventCanceled ||
        ((O = Jr(c)),
        O.removeAttribute("id"),
        (O.draggable = !1),
        (O.style["will-change"] = ""),
        this._hideClone(),
        K(O, this.options.chosenClass, !1),
        (f.clone = O)),
      (r.cloneId = st(function () {
        X("clone", r),
          !f.eventCanceled &&
            (r.options.removeCloneOnHide || $.insertBefore(O, c),
            r._hideClone(),
            W({ sortable: r, name: "clone" }));
      })),
      !e && K(c, s.dragClass, !0),
      e
        ? ((ut = !0), (r._loopId = setInterval(r._emulateDragOver, 50)))
        : (C(document, "mouseup", r._onDrop),
          C(document, "touchend", r._onDrop),
          C(document, "touchcancel", r._onDrop),
          o &&
            ((o.effectAllowed = "move"), s.setData && s.setData.call(r, o, c)),
          j(document, "drop", r),
          m(c, "transform", "translateZ(0)")),
      (Te = !0),
      (r._dragStartId = st(r._dragStarted.bind(r, e, t))),
      j(document, "selectstart", r),
      (Re = !0),
      Ue && m(document.body, "user-select", "none");
  },
  _onDragOver: function (t) {
    var e = this.el,
      r = t.target,
      o,
      s,
      n,
      a = this.options,
      l = a.group,
      i = f.active,
      d = Ze === l,
      u = a.sort,
      p = L || i,
      k,
      h = this,
      I = !1;
    if (Et) return;
    function P(Be, lo) {
      X(
        Be,
        h,
        le(
          {
            evt: t,
            isOwner: d,
            axis: k ? "vertical" : "horizontal",
            revert: n,
            dragRect: o,
            targetRect: s,
            canSort: u,
            fromSortable: p,
            target: r,
            completed: U,
            onMove: function (Yt, co) {
              return Je($, e, c, o, Yt, N(Yt), t, co);
            },
            changed: ee,
          },
          lo
        )
      );
    }
    function z() {
      P("dragOverAnimationCapture"),
        h.captureAnimationState(),
        h !== p && p.captureAnimationState();
    }
    function U(Be) {
      return (
        P("dragOverCompleted", { insertion: Be }),
        Be &&
          (d ? i._hideClone() : i._showClone(h),
          h !== p &&
            (K(c, L ? L.options.ghostClass : i.options.ghostClass, !1),
            K(c, a.ghostClass, !0)),
          L !== h && h !== f.active
            ? (L = h)
            : h === f.active && L && (L = null),
          p === h && (h._ignoreWhileAnimating = r),
          h.animateAll(function () {
            P("dragOverAnimationComplete"), (h._ignoreWhileAnimating = null);
          }),
          h !== p && (p.animateAll(), (p._ignoreWhileAnimating = null))),
        ((r === c && !c.animated) || (r === e && !r.animated)) && ($e = null),
        !a.dragoverBubble &&
          !t.rootEl &&
          r !== document &&
          (c.parentNode[J]._isOutsideThisEl(t.target), !Be && ke(t)),
        !a.dragoverBubble && t.stopPropagation && t.stopPropagation(),
        (I = !0)
      );
    }
    function ee() {
      (Q = re(c)),
        (_e = re(c, a.draggable)),
        W({
          sortable: h,
          name: "change",
          toEl: e,
          newIndex: Q,
          newDraggableIndex: _e,
          originalEvent: t,
        });
    }
    if (
      (t.preventDefault !== void 0 && t.cancelable && t.preventDefault(),
      (r = ae(r, a.draggable, e, !0)),
      P("dragOver"),
      f.eventCanceled)
    )
      return I;
    if (
      c.contains(t.target) ||
      (r.animated && r.animatingX && r.animatingY) ||
      h._ignoreWhileAnimating === r
    )
      return U(!1);
    if (
      ((ut = !1),
      i &&
        !a.disabled &&
        (d
          ? u || (n = D !== $)
          : L === this ||
            ((this.lastPutMode = Ze.checkPull(this, i, c, t)) &&
              l.checkPut(this, i, c, t))))
    ) {
      if (
        ((k = this._getDirection(t, r) === "vertical"),
        (o = N(c)),
        P("dragOverValid"),
        f.eventCanceled)
      )
        return I;
      if (n)
        return (
          (D = $),
          z(),
          this._hideClone(),
          P("revert"),
          f.eventCanceled || (Ae ? $.insertBefore(c, Ae) : $.appendChild(c)),
          U(!0)
        );
      var S = Wt(e, a.draggable);
      if (!S || (Sa(t, k, this) && !S.animated)) {
        if (S === c) return U(!1);
        if (
          (S && e === t.target && (r = S),
          r && (s = N(r)),
          Je($, e, c, o, r, s, t, !!r) !== !1)
        )
          return (
            z(),
            S && S.nextSibling
              ? e.insertBefore(c, S.nextSibling)
              : e.appendChild(c),
            (D = e),
            ee(),
            U(!0)
          );
      } else if (S && Aa(t, k, this)) {
        var ce = De(e, 0, a, !0);
        if (ce === c) return U(!1);
        if (((r = ce), (s = N(r)), Je($, e, c, o, r, s, t, !1) !== !1))
          return z(), e.insertBefore(c, ce), (D = e), ee(), U(!0);
      } else if (r.parentNode === e) {
        s = N(r);
        var te = 0,
          b,
          A = c.parentNode !== e,
          q = !xa(
            (c.animated && c.toRect) || o,
            (r.animated && r.toRect) || s,
            k
          ),
          F = k ? "top" : "left",
          G = ur(r, "top", "top") || ur(c, "top", "top"),
          fe = G ? G.scrollTop : void 0;
        $e !== r && ((b = s[F]), (qe = !1), (Ke = (!q && a.invertSwap) || A)),
          (te = $a(
            t,
            r,
            s,
            k,
            q ? 1 : a.swapThreshold,
            a.invertedSwapThreshold == null
              ? a.swapThreshold
              : a.invertedSwapThreshold,
            Ke,
            $e === r
          ));
        var oe;
        if (te !== 0) {
          var ge = re(c);
          do (ge -= te), (oe = D.children[ge]);
          while (oe && (m(oe, "display") === "none" || oe === _));
        }
        if (te === 0 || oe === r) return U(!1);
        ($e = r), (Ve = te);
        var xe = r.nextElementSibling,
          ve = !1;
        ve = te === 1;
        var Ce = Je($, e, c, o, r, s, t, ve);
        if (Ce !== !1)
          return (
            (Ce === 1 || Ce === -1) && (ve = Ce === 1),
            (Et = !0),
            setTimeout(ka, 30),
            z(),
            ve && !xe
              ? e.appendChild(c)
              : r.parentNode.insertBefore(c, ve ? xe : r),
            G && Qr(G, 0, fe - G.scrollTop),
            (D = c.parentNode),
            b !== void 0 && !Ke && (ot = Math.abs(b - N(r)[F])),
            ee(),
            U(!0)
          );
      }
      if (e.contains(c)) return U(!1);
    }
    return !1;
  },
  _ignoreWhileAnimating: null,
  _offMoveEvents: function () {
    C(document, "mousemove", this._onTouchMove),
      C(document, "touchmove", this._onTouchMove),
      C(document, "pointermove", this._onTouchMove),
      C(document, "dragover", ke),
      C(document, "mousemove", ke),
      C(document, "touchmove", ke);
  },
  _offUpEvents: function () {
    var t = this.el.ownerDocument;
    C(t, "mouseup", this._onDrop),
      C(t, "touchend", this._onDrop),
      C(t, "pointerup", this._onDrop),
      C(t, "touchcancel", this._onDrop),
      C(document, "selectstart", this);
  },
  _onDrop: function (t) {
    var e = this.el,
      r = this.options;
    if (
      ((Q = re(c)),
      (_e = re(c, r.draggable)),
      X("drop", this, { evt: t }),
      (D = c && c.parentNode),
      (Q = re(c)),
      (_e = re(c, r.draggable)),
      f.eventCanceled)
    ) {
      this._nulling();
      return;
    }
    (Te = !1),
      (Ke = !1),
      (qe = !1),
      clearInterval(this._loopId),
      clearTimeout(this._dragStartTimer),
      Dt(this.cloneId),
      Dt(this._dragStartId),
      this.nativeDraggable &&
        (C(document, "drop", this), C(e, "dragstart", this._onDragStart)),
      this._offMoveEvents(),
      this._offUpEvents(),
      Ue && m(document.body, "user-select", ""),
      m(c, "transform", ""),
      t &&
        (Re &&
          (t.cancelable && t.preventDefault(),
          !r.dropBubble && t.stopPropagation()),
        _ && _.parentNode && _.parentNode.removeChild(_),
        ($ === D || (L && L.lastPutMode !== "clone")) &&
          O &&
          O.parentNode &&
          O.parentNode.removeChild(O),
        c &&
          (this.nativeDraggable && C(c, "dragend", this),
          St(c),
          (c.style["will-change"] = ""),
          Re &&
            !Te &&
            K(c, L ? L.options.ghostClass : this.options.ghostClass, !1),
          K(c, this.options.chosenClass, !1),
          W({
            sortable: this,
            name: "unchoose",
            toEl: D,
            newIndex: null,
            newDraggableIndex: null,
            originalEvent: t,
          }),
          $ !== D
            ? (Q >= 0 &&
                (W({
                  rootEl: D,
                  name: "add",
                  toEl: D,
                  fromEl: $,
                  originalEvent: t,
                }),
                W({
                  sortable: this,
                  name: "remove",
                  toEl: D,
                  originalEvent: t,
                }),
                W({
                  rootEl: D,
                  name: "sort",
                  toEl: D,
                  fromEl: $,
                  originalEvent: t,
                }),
                W({ sortable: this, name: "sort", toEl: D, originalEvent: t })),
              L && L.save())
            : Q !== Oe &&
              Q >= 0 &&
              (W({ sortable: this, name: "update", toEl: D, originalEvent: t }),
              W({ sortable: this, name: "sort", toEl: D, originalEvent: t })),
          f.active &&
            ((Q == null || Q === -1) && ((Q = Oe), (_e = He)),
            W({ sortable: this, name: "end", toEl: D, originalEvent: t }),
            this.save()))),
      this._nulling();
  },
  _nulling: function () {
    X("nulling", this),
      ($ =
        c =
        D =
        _ =
        Ae =
        O =
        rt =
        be =
        je =
        se =
        Re =
        Q =
        _e =
        Oe =
        He =
        $e =
        Ve =
        L =
        Ze =
        f.dragged =
        f.ghost =
        f.clone =
        f.active =
          null),
      ht.forEach(function (t) {
        t.checked = !0;
      }),
      (ht.length = jt = kt = 0);
  },
  handleEvent: function (t) {
    switch (t.type) {
      case "drop":
      case "dragend":
        this._onDrop(t);
        break;
      case "dragenter":
      case "dragover":
        c && (this._onDragOver(t), ja(t));
        break;
      case "selectstart":
        t.preventDefault();
        break;
    }
  },
  toArray: function () {
    for (
      var t = [],
        e,
        r = this.el.children,
        o = 0,
        s = r.length,
        n = this.options;
      o < s;
      o++
    )
      (e = r[o]),
        ae(e, n.draggable, this.el, !1) &&
          t.push(e.getAttribute(n.dataIdAttr) || Ia(e));
    return t;
  },
  sort: function (t, e) {
    var r = {},
      o = this.el;
    this.toArray().forEach(function (s, n) {
      var a = o.children[n];
      ae(a, this.options.draggable, o, !1) && (r[s] = a);
    }, this),
      e && this.captureAnimationState(),
      t.forEach(function (s) {
        r[s] && (o.removeChild(r[s]), o.appendChild(r[s]));
      }),
      e && this.animateAll();
  },
  save: function () {
    var t = this.options.store;
    t && t.set && t.set(this);
  },
  closest: function (t, e) {
    return ae(t, e || this.options.draggable, this.el, !1);
  },
  option: function (t, e) {
    var r = this.options;
    if (e === void 0) return r[t];
    var o = Xe.modifyOption(this, t, e);
    typeof o < "u" ? (r[t] = o) : (r[t] = e), t === "group" && oo(r);
  },
  destroy: function () {
    X("destroy", this);
    var t = this.el;
    (t[J] = null),
      C(t, "mousedown", this._onTapStart),
      C(t, "touchstart", this._onTapStart),
      C(t, "pointerdown", this._onTapStart),
      this.nativeDraggable && (C(t, "dragover", this), C(t, "dragenter", this)),
      Array.prototype.forEach.call(
        t.querySelectorAll("[draggable]"),
        function (e) {
          e.removeAttribute("draggable");
        }
      ),
      this._onDrop(),
      this._disableDelayedDragEvents(),
      pt.splice(pt.indexOf(this.el), 1),
      (this.el = t = null);
  },
  _hideClone: function () {
    if (!be) {
      if ((X("hideClone", this), f.eventCanceled)) return;
      m(O, "display", "none"),
        this.options.removeCloneOnHide &&
          O.parentNode &&
          O.parentNode.removeChild(O),
        (be = !0);
    }
  },
  _showClone: function (t) {
    if (t.lastPutMode !== "clone") {
      this._hideClone();
      return;
    }
    if (be) {
      if ((X("showClone", this), f.eventCanceled)) return;
      c.parentNode == $ && !this.options.group.revertClone
        ? $.insertBefore(O, c)
        : Ae
        ? $.insertBefore(O, Ae)
        : $.appendChild(O),
        this.options.group.revertClone && this.animate(c, O),
        m(O, "display", ""),
        (be = !1);
    }
  },
};
function ja(t) {
  t.dataTransfer && (t.dataTransfer.dropEffect = "move"),
    t.cancelable && t.preventDefault();
}
function Je(t, e, r, o, s, n, a, l) {
  var i,
    d = t[J],
    u = d.options.onMove,
    p;
  return (
    window.CustomEvent && !me && !Ge
      ? (i = new CustomEvent("move", { bubbles: !0, cancelable: !0 }))
      : ((i = document.createEvent("Event")), i.initEvent("move", !0, !0)),
    (i.to = e),
    (i.from = t),
    (i.dragged = r),
    (i.draggedRect = o),
    (i.related = s || e),
    (i.relatedRect = n || N(e)),
    (i.willInsertAfter = l),
    (i.originalEvent = a),
    t.dispatchEvent(i),
    u && (p = u.call(d, i, a)),
    p
  );
}
function St(t) {
  t.draggable = !1;
}
function ka() {
  Et = !1;
}
function Aa(t, e, r) {
  var o = N(De(r.el, 0, r.options, !0)),
    s = eo(r.el, r.options, _),
    n = 10;
  return e
    ? t.clientX < s.left - n || (t.clientY < o.top && t.clientX < o.right)
    : t.clientY < s.top - n || (t.clientY < o.bottom && t.clientX < o.left);
}
function Sa(t, e, r) {
  var o = N(Wt(r.el, r.options.draggable)),
    s = eo(r.el, r.options, _),
    n = 10;
  return e
    ? t.clientX > s.right + n || (t.clientY > o.bottom && t.clientX > o.left)
    : t.clientY > s.bottom + n || (t.clientX > o.right && t.clientY > o.top);
}
function $a(t, e, r, o, s, n, a, l) {
  var i = o ? t.clientY : t.clientX,
    d = o ? r.height : r.width,
    u = o ? r.top : r.left,
    p = o ? r.bottom : r.right,
    k = !1;
  if (!a) {
    if (l && ot < d * s) {
      if (
        (!qe &&
          (Ve === 1 ? i > u + (d * n) / 2 : i < p - (d * n) / 2) &&
          (qe = !0),
        qe)
      )
        k = !0;
      else if (Ve === 1 ? i < u + ot : i > p - ot) return -Ve;
    } else if (i > u + (d * (1 - s)) / 2 && i < p - (d * (1 - s)) / 2)
      return Ta(e);
  }
  return (
    (k = k || a),
    k && (i < u + (d * n) / 2 || i > p - (d * n) / 2)
      ? i > u + d / 2
        ? 1
        : -1
      : 0
  );
}
function Ta(t) {
  return re(c) < re(t) ? 1 : -1;
}
function Ia(t) {
  for (
    var e = t.tagName + t.className + t.src + t.href + t.textContent,
      r = e.length,
      o = 0;
    r--;

  )
    o += e.charCodeAt(r);
  return o.toString(36);
}
function Oa(t) {
  ht.length = 0;
  for (var e = t.getElementsByTagName("input"), r = e.length; r--; ) {
    var o = e[r];
    o.checked && ht.push(o);
  }
}
function st(t) {
  return setTimeout(t, 0);
}
function Dt(t) {
  return clearTimeout(t);
}
bt &&
  j(document, "touchmove", function (t) {
    (f.active || Te) && t.cancelable && t.preventDefault();
  });
f.utils = {
  on: j,
  off: C,
  css: m,
  find: Zr,
  is: function (t, e) {
    return !!ae(t, e, t, !1);
  },
  extend: ma,
  throttle: Kr,
  closest: ae,
  toggleClass: K,
  clone: Jr,
  index: re,
  nextTick: st,
  cancelNextTick: Dt,
  detectDirection: ro,
  getChild: De,
};
f.get = function (t) {
  return t[J];
};
f.mount = function () {
  for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++)
    e[r] = arguments[r];
  e[0].constructor === Array && (e = e[0]),
    e.forEach(function (o) {
      if (!o.prototype || !o.prototype.constructor)
        throw "Sortable: Mounted plugin must be a constructor function, not ".concat(
          {}.toString.call(o)
        );
      o.utils && (f.utils = le(le({}, f.utils), o.utils)), Xe.mount(o);
    });
};
f.create = function (t, e) {
  return new f(t, e);
};
f.version = ua;
var R = [],
  Ne,
  Bt,
  Mt = !1,
  $t,
  Tt,
  mt,
  Fe;
function Ea() {
  function t() {
    this.defaults = {
      scroll: !0,
      forceAutoScrollFallback: !1,
      scrollSensitivity: 30,
      scrollSpeed: 10,
      bubbleScroll: !0,
    };
    for (var e in this)
      e.charAt(0) === "_" &&
        typeof this[e] == "function" &&
        (this[e] = this[e].bind(this));
  }
  return (
    (t.prototype = {
      dragStarted: function (e) {
        var r = e.originalEvent;
        this.sortable.nativeDraggable
          ? j(document, "dragover", this._handleAutoScroll)
          : this.options.supportPointer
          ? j(document, "pointermove", this._handleFallbackAutoScroll)
          : r.touches
          ? j(document, "touchmove", this._handleFallbackAutoScroll)
          : j(document, "mousemove", this._handleFallbackAutoScroll);
      },
      dragOverCompleted: function (e) {
        var r = e.originalEvent;
        !this.options.dragOverBubble && !r.rootEl && this._handleAutoScroll(r);
      },
      drop: function () {
        this.sortable.nativeDraggable
          ? C(document, "dragover", this._handleAutoScroll)
          : (C(document, "pointermove", this._handleFallbackAutoScroll),
            C(document, "touchmove", this._handleFallbackAutoScroll),
            C(document, "mousemove", this._handleFallbackAutoScroll)),
          gr(),
          nt(),
          fa();
      },
      nulling: function () {
        (mt = Bt = Ne = Mt = Fe = $t = Tt = null), (R.length = 0);
      },
      _handleFallbackAutoScroll: function (e) {
        this._handleAutoScroll(e, !0);
      },
      _handleAutoScroll: function (e, r) {
        var o = this,
          s = (e.touches ? e.touches[0] : e).clientX,
          n = (e.touches ? e.touches[0] : e).clientY,
          a = document.elementFromPoint(s, n);
        if (
          ((mt = e),
          r || this.options.forceAutoScrollFallback || Ge || me || Ue)
        ) {
          It(e, this.options, a, r);
          var l = we(a, !0);
          Mt &&
            (!Fe || s !== $t || n !== Tt) &&
            (Fe && gr(),
            (Fe = setInterval(function () {
              var i = we(document.elementFromPoint(s, n), !0);
              i !== l && ((l = i), nt()), It(e, o.options, i, r);
            }, 10)),
            ($t = s),
            (Tt = n));
        } else {
          if (!this.options.bubbleScroll || we(a, !0) === ie()) {
            nt();
            return;
          }
          It(e, this.options, we(a, !1), !1);
        }
      },
    }),
    he(t, { pluginName: "scroll", initializeByDefault: !0 })
  );
}
function nt() {
  R.forEach(function (t) {
    clearInterval(t.pid);
  }),
    (R = []);
}
function gr() {
  clearInterval(Fe);
}
var It = Kr(function (t, e, r, o) {
    if (e.scroll) {
      var s = (t.touches ? t.touches[0] : t).clientX,
        n = (t.touches ? t.touches[0] : t).clientY,
        a = e.scrollSensitivity,
        l = e.scrollSpeed,
        i = ie(),
        d = !1,
        u;
      Bt !== r &&
        ((Bt = r),
        nt(),
        (Ne = e.scroll),
        (u = e.scrollFn),
        Ne === !0 && (Ne = we(r, !0)));
      var p = 0,
        k = Ne;
      do {
        var h = k,
          I = N(h),
          P = I.top,
          z = I.bottom,
          U = I.left,
          ee = I.right,
          S = I.width,
          ce = I.height,
          te = void 0,
          b = void 0,
          A = h.scrollWidth,
          q = h.scrollHeight,
          F = m(h),
          G = h.scrollLeft,
          fe = h.scrollTop;
        h === i
          ? ((te =
              S < A &&
              (F.overflowX === "auto" ||
                F.overflowX === "scroll" ||
                F.overflowX === "visible")),
            (b =
              ce < q &&
              (F.overflowY === "auto" ||
                F.overflowY === "scroll" ||
                F.overflowY === "visible")))
          : ((te =
              S < A && (F.overflowX === "auto" || F.overflowX === "scroll")),
            (b =
              ce < q && (F.overflowY === "auto" || F.overflowY === "scroll")));
        var oe =
            te &&
            (Math.abs(ee - s) <= a && G + S < A) -
              (Math.abs(U - s) <= a && !!G),
          ge =
            b &&
            (Math.abs(z - n) <= a && fe + ce < q) -
              (Math.abs(P - n) <= a && !!fe);
        if (!R[p]) for (var xe = 0; xe <= p; xe++) R[xe] || (R[xe] = {});
        (R[p].vx != oe || R[p].vy != ge || R[p].el !== h) &&
          ((R[p].el = h),
          (R[p].vx = oe),
          (R[p].vy = ge),
          clearInterval(R[p].pid),
          (oe != 0 || ge != 0) &&
            ((d = !0),
            (R[p].pid = setInterval(
              function () {
                o && this.layer === 0 && f.active._onTouchMove(mt);
                var ve = R[this.layer].vy ? R[this.layer].vy * l : 0,
                  Ce = R[this.layer].vx ? R[this.layer].vx * l : 0;
                (typeof u == "function" &&
                  u.call(
                    f.dragged.parentNode[J],
                    Ce,
                    ve,
                    t,
                    mt,
                    R[this.layer].el
                  ) !== "continue") ||
                  Qr(R[this.layer].el, Ce, ve);
              }.bind({ layer: p }),
              24
            )))),
          p++;
      } while (e.bubbleScroll && k !== i && (k = we(k, !1)));
      Mt = d;
    }
  }, 30),
  ao = function (t) {
    var e = t.originalEvent,
      r = t.putSortable,
      o = t.dragEl,
      s = t.activeSortable,
      n = t.dispatchSortableEvent,
      a = t.hideGhostForTarget,
      l = t.unhideGhostForTarget;
    if (e) {
      var i = r || s;
      a();
      var d =
          e.changedTouches && e.changedTouches.length ? e.changedTouches[0] : e,
        u = document.elementFromPoint(d.clientX, d.clientY);
      l(),
        i &&
          !i.el.contains(u) &&
          (n("spill"), this.onSpill({ dragEl: o, putSortable: r }));
    }
  };
function zt() {}
zt.prototype = {
  startIndex: null,
  dragStart: function (t) {
    var e = t.oldDraggableIndex;
    this.startIndex = e;
  },
  onSpill: function (t) {
    var e = t.dragEl,
      r = t.putSortable;
    this.sortable.captureAnimationState(), r && r.captureAnimationState();
    var o = De(this.sortable.el, this.startIndex, this.options);
    o ? this.sortable.el.insertBefore(e, o) : this.sortable.el.appendChild(e),
      this.sortable.animateAll(),
      r && r.animateAll();
  },
  drop: ao,
};
he(zt, { pluginName: "revertOnSpill" });
function Gt() {}
Gt.prototype = {
  onSpill: function (t) {
    var e = t.dragEl,
      r = t.putSortable,
      o = r || this.sortable;
    o.captureAnimationState(),
      e.parentNode && e.parentNode.removeChild(e),
      o.animateAll();
  },
  drop: ao,
};
he(Gt, { pluginName: "removeOnSpill" });
f.mount(new Ea());
f.mount(Gt, zt);
function Da(t) {
  return t == null ? t : JSON.parse(JSON.stringify(t));
}
function Ba(t) {
  Ft() && _o(t);
}
function Ma(t) {
  Ft() ? bo(t) : yo(t);
}
const vr = Symbol("cloneElement");
function Ra(...t) {
  var e, r;
  const o = (e = Ft()) == null ? void 0 : e.proxy,
    s = t[0];
  let [, n, a] = t;
  Array.isArray(Z(n)) || ((a = n), (n = null));
  let l = null;
  const {
    immediate: i = !0,
    clone: d = Da,
    customUpdate: u,
  } = (r = Z(a)) != null ? r : {};
  function p(b) {
    var A;
    b.item[vr] = d(Z((A = Z(n)) == null ? void 0 : A[b.oldIndex]));
  }
  function k(b) {
    const A = b.item[vr];
    if (!ta(A)) {
      if ((xt(b.item), yt(n))) {
        const q = [...Z(n)];
        n.value = ar(q, b.newDraggableIndex, A);
        return;
      }
      ar(Z(n), b.newDraggableIndex, A);
    }
  }
  function h(b) {
    const {
      from: A,
      item: q,
      oldIndex: F,
      oldDraggableIndex: G,
      pullMode: fe,
      clone: oe,
    } = b;
    if ((ir(A, q, F), fe === "clone")) {
      xt(oe);
      return;
    }
    if (yt(n)) {
      const ge = [...Z(n)];
      n.value = nr(ge, G);
      return;
    }
    nr(Z(n), G);
  }
  function I(b) {
    if (u) {
      u(b);
      return;
    }
    const { from: A, item: q, oldIndex: F, newIndex: G } = b;
    if ((xt(q), ir(A, q, F), yt(n))) {
      const fe = [...Z(n)];
      n.value = sr(fe, F, G);
      return;
    }
    sr(Z(n), F, G);
  }
  const P = { onUpdate: I, onStart: p, onAdd: k, onRemove: h };
  function z(b) {
    const A = Z(s);
    return (
      b || (b = ra(A) ? oa(A, o == null ? void 0 : o.$el) : A),
      b && !aa(b) && (b = b.$el),
      b || Qn("Root element not found"),
      b
    );
  }
  function U() {
    var b;
    const A = (b = Z(a)) != null ? b : {},
      q = Wr(A, ["immediate", "clone"]);
    return na(n === null ? {} : P, q);
  }
  const ee = (b) => {
    (b = z(b)), l && S.destroy(), (l = new f(b, U()));
  };
  go(
    () => a,
    () => {
      l &&
        ia(U(), (b, A) => {
          l == null || l.option(b, A);
        });
    },
    { deep: !0 }
  );
  const S = {
      option: (b, A) => (l == null ? void 0 : l.option(b, A)),
      destroy: () => {
        l == null || l.destroy(), (l = null);
      },
      save: () => (l == null ? void 0 : l.save()),
      toArray: () => (l == null ? void 0 : l.toArray()),
      closest: (...b) => (l == null ? void 0 : l.closest(...b)),
    },
    ce = () => (S == null ? void 0 : S.option("disabled", !0)),
    te = () => (S == null ? void 0 : S.option("disabled", !1));
  return (
    Ma(() => {
      i && ee();
    }),
    Ba(S.destroy),
    Ie({ start: ee, pause: ce, resume: te }, S)
  );
}
const Rt = [
    "update",
    "start",
    "add",
    "remove",
    "choose",
    "unchoose",
    "end",
    "sort",
    "filter",
    "clone",
    "move",
    "change",
  ],
  Na = [
    "clone",
    "animation",
    "ghostClass",
    "group",
    "sort",
    "disabled",
    "store",
    "handle",
    "draggable",
    "swapThreshold",
    "invertSwap",
    "invertedSwapThreshold",
    "removeCloneOnHide",
    "direction",
    "chosenClass",
    "dragClass",
    "ignore",
    "filter",
    "preventOnFilter",
    "easing",
    "setData",
    "dropBubble",
    "dragoverBubble",
    "dataIdAttr",
    "delay",
    "delayOnTouchOnly",
    "touchStartThreshold",
    "forceFallback",
    "fallbackClass",
    "fallbackOnBody",
    "fallbackTolerance",
    "fallbackOffset",
    "supportPointer",
    "emptyInsertThreshold",
    "scroll",
    "forceAutoScrollFallback",
    "scrollSensitivity",
    "scrollSpeed",
    "bubbleScroll",
    "modelValue",
    "tag",
    "target",
    "customUpdate",
    ...Rt.map((t) => `on${t.replace(/^\S/, (e) => e.toUpperCase())}`),
  ],
  Fa = po({
    name: "VueDraggable",
    model: { prop: "modelValue", event: "update:modelValue" },
    props: Na,
    emits: ["update:modelValue", ...Rt],
    setup(t, { slots: e, emit: r, expose: o, attrs: s }) {
      const n = Rt.reduce((u, p) => {
          const k = `on${p.replace(/^\S/, (h) => h.toUpperCase())}`;
          return (u[k] = (...h) => r(p, ...h)), u;
        }, {}),
        a = Kt(() => {
          const u = vo(t),
            p = Wr(u, ["modelValue"]),
            k = Object.entries(p).reduce((h, [I, P]) => {
              const z = Z(P);
              return z !== void 0 && (h[I] = z), h;
            }, {});
          return Ie(Ie({}, n), ea(Ie(Ie({}, s), k)));
        }),
        l = Kt({
          get: () => t.modelValue,
          set: (u) => r("update:modelValue", u),
        }),
        i = ho(),
        d = mo(Ra(t.target || i, l, a));
      return (
        o(d),
        () => {
          var u;
          return fo(
            t.tag || "div",
            { ref: i },
            (u = e == null ? void 0 : e.default) == null ? void 0 : u.call(e, d)
          );
        }
      );
    },
  }),
  Ua = g.extend({});
var La = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-card" }, [
        e.$scopedSlots.cover
          ? r("div", { staticClass: "ax-card__cover" }, [e._t("cover")], 2)
          : e._e(),
        e.$scopedSlots.body
          ? r("div", { staticClass: "ax-card__body" }, [e._t("body")], 2)
          : e._e(),
      ])
    );
  },
  Ha = [],
  Va = v(Ua, La, Ha, !1, null, "e1175075", null, null);
const qa = Va.exports,
  Wa = g.extend({
    components: { AxButton: E, AxCard: qa, AxIcon: H, AxForm: qo },
    props: {
      item: { type: Object, required: !0 },
      backgroundColor: { type: String, default: void 0 },
      isArtboardProject: { type: Boolean, default: !1 },
      loading: { type: Boolean, default: !1 },
      viewOnly: { type: Boolean, default: !1 },
      enterpriseLicenseCheckFailed: { type: Boolean, default: !1 },
    },
    data() {
      return { currentImage1xIndex: 0, deleteConfirmation: !1 };
    },
    computed: {
      images() {
        return this.item.thumbnailsSet;
      },
      imgKey() {
        const t = this.src.indexOf("?");
        return t >= 0 ? this.src.substr(0, t) : this.src;
      },
      src() {
        let t;
        const e = this.images.filter((r) => r.Density === 1);
        return (
          e &&
            e.length > this.currentImage1xIndex &&
            (t = e[this.currentImage1xIndex]),
          t || (t = this.images[0]),
          t ? t.Url : ""
        );
      },
      srcset() {
        const e = this.item.thumbnailsSet
          .filter((r) => r.Density !== 1)
          .map((r) => `${r.Url} ${r.Density}x`);
        return e.length > 0 ? e.join() : void 0;
      },
      preview() {
        return {
          name: T["expo.preview"].name,
          params: { screen: this.item.id },
        };
      },
      inspect() {
        return {
          name: T["expo.inspect"].name,
          params: { screen: this.item.id },
        };
      },
      thumbnailStyles() {
        const t = {};
        return (
          this.backgroundColor && (t.backgroundColor = this.backgroundColor), t
        );
      },
      classes() {
        return {
          "ax-artboard-item__card": !0,
          "ax-artboard-item__card-confirm": this.deleteConfirmation,
        };
      },
    },
    methods: {
      loadImageError() {
        this.currentImage1xIndex += 1;
      },
      showDeleteConfirmation() {
        this.deleteConfirmation = !0;
      },
      closeDeleteConfirmation() {
        this.deleteConfirmation = !1;
      },
      async deleteArtboard() {
        const { shortcut: t } = this.$route.params;
        await this.$store.dispatch(new Wo(t, this.item.id));
      },
    },
  });
var za = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("AxCard", {
        class: e.classes,
        scopedSlots: e._u([
          {
            key: "cover",
            fn: function () {
              return [
                r("div", { staticClass: "ax-artboard-item__card-cover" }, [
                  r("div", { staticClass: "ax-artboard-item__overlay" }),
                  r("div", { staticClass: "artboard-actions" }, [
                    e.isArtboardProject &&
                    !e.viewOnly &&
                    !e.enterpriseLicenseCheckFailed
                      ? r(
                          "div",
                          {
                            staticClass:
                              "artboard-actions--delete disable-drag-handle",
                          },
                          [
                            r(
                              "div",
                              { staticClass: "artboard-actions--delete-btn" },
                              [
                                e.deleteConfirmation
                                  ? e._e()
                                  : r(
                                      "AxButton",
                                      {
                                        staticClass:
                                          "artboard-action__button--delete",
                                        attrs: { small: "", icon: "" },
                                        on: { click: e.showDeleteConfirmation },
                                      },
                                      [
                                        r("AxIcon", {
                                          attrs: { name: "trashcan" },
                                        }),
                                      ],
                                      1
                                    ),
                              ],
                              1
                            ),
                            e.deleteConfirmation
                              ? r(
                                  "div",
                                  {
                                    staticClass:
                                      "artboard-actions--delete-confirm",
                                  },
                                  [
                                    r("AxForm", {
                                      attrs: { submit: e.deleteArtboard },
                                      scopedSlots: e._u(
                                        [
                                          {
                                            key: "default",
                                            fn: function ({
                                              handleSubmit: o,
                                              submitting: s,
                                            }) {
                                              return [
                                                r("form", [
                                                  r(
                                                    "div",
                                                    {
                                                      staticClass:
                                                        "col artboard-actions--delete-confirm-label",
                                                    },
                                                    [
                                                      e._v(
                                                        " Are you sure you want to delete this screen? "
                                                      ),
                                                    ]
                                                  ),
                                                  r(
                                                    "div",
                                                    {
                                                      staticClass:
                                                        "row g-0 artboard-actions--delete-confirm-body",
                                                    },
                                                    [
                                                      r(
                                                        "div",
                                                        {
                                                          staticClass:
                                                            "col-auto",
                                                        },
                                                        [
                                                          r(
                                                            "AxButton",
                                                            {
                                                              staticClass:
                                                                "artboard-actions--delete-cancel-btn",
                                                              attrs: {
                                                                block: "",
                                                                color:
                                                                  "secondary",
                                                              },
                                                              on: {
                                                                click:
                                                                  e.closeDeleteConfirmation,
                                                              },
                                                            },
                                                            [e._v(" Cancel ")]
                                                          ),
                                                        ],
                                                        1
                                                      ),
                                                      r(
                                                        "div",
                                                        {
                                                          staticClass:
                                                            "col-auto",
                                                        },
                                                        [
                                                          r(
                                                            "AxButton",
                                                            {
                                                              staticClass:
                                                                "artboard-actions--delete-confirm-btn",
                                                              attrs: {
                                                                type: "submit",
                                                                color: "danger",
                                                                block: "",
                                                                disabled:
                                                                  s ||
                                                                  e.loading,
                                                              },
                                                              on: {
                                                                click:
                                                                  function (n) {
                                                                    return (
                                                                      n.preventDefault(),
                                                                      o.apply(
                                                                        null,
                                                                        arguments
                                                                      )
                                                                    );
                                                                  },
                                                              },
                                                            },
                                                            [
                                                              e._v(
                                                                " Confirm Delete "
                                                              ),
                                                            ]
                                                          ),
                                                        ],
                                                        1
                                                      ),
                                                    ]
                                                  ),
                                                ]),
                                              ];
                                            },
                                          },
                                        ],
                                        null,
                                        !1,
                                        2072409883
                                      ),
                                    }),
                                  ],
                                  1
                                )
                              : e._e(),
                          ]
                        )
                      : e._e(),
                    !e.deleteConfirmation && !e.item.failedToGenerate
                      ? r(
                          "div",
                          {
                            staticClass:
                              "artboard-actions--view disable-drag-handle",
                          },
                          [
                            r(
                              "AxButton",
                              {
                                staticClass: "artboard-action__button",
                                attrs: {
                                  color: "primary",
                                  block: "",
                                  to: e.preview,
                                },
                              },
                              [e._v(" 预览 ")]
                            ),
                            r(
                              "AxButton",
                              {
                                staticClass: "artboard-action__button",
                                attrs: {
                                  color: "secondary",
                                  block: "",
                                  to: e.inspect,
                                },
                              },
                              [e._v(" 检查 ")]
                            ),
                          ],
                          1
                        )
                      : e._e(),
                  ]),
                  r("div", { staticClass: "artboard-image-container" }, [
                    e.item.failedToGenerate
                      ? r(
                          "div",
                          { staticClass: "failed-icon-container" },
                          [
                            r("AxIcon", {
                              attrs: { name: "exclamation-circle" },
                            }),
                            r("br"),
                            e._v(" Failed to generate "),
                          ],
                          1
                        )
                      : r("img", {
                          key: e.imgKey,
                          staticClass: "artboard-image",
                          style: e.thumbnailStyles,
                          attrs: {
                            loading: "lazy",
                            src: e.src,
                            srcset: e.srcset,
                            alt: e.item.name,
                          },
                          on: { error: e.loadImageError },
                        }),
                  ]),
                ]),
              ];
            },
            proxy: !0,
          },
          {
            key: "body",
            fn: function () {
              return [
                r(
                  "div",
                  {
                    staticClass: "artboard-name",
                    attrs: { title: e.item.name },
                  },
                  [
                    r("AxIcon", {
                      staticClass: "artboard-icon icon-margin",
                      attrs: { name: "axure_page_overview" },
                    }),
                    e._v(" " + e._s(e.item.name) + " "),
                  ],
                  1
                ),
              ];
            },
            proxy: !0,
          },
        ]),
      })
    );
  },
  Ga = [],
  Xa = v(Wa, za, Ga, !1, null, "bee8768f", null, null);
const Ya = Xa.exports;
function Za(t, e) {
  return e.reduce((r, o) => {
    const s = t.find((n) => n.id === o);
    return s && (r[s.id] = s), r;
  }, {});
}
const Ka = g.extend({
  components: { AxArtboardGridItem: Ya, Draggable: Fa },
  props: {
    shortcut: { type: String, required: !0 },
    items: { type: Array, default: () => [] },
    itemWidth: { type: String, default: "300px" },
    itemHeight: { type: String, default: "300px" },
    listView: { type: Boolean, default: !1 },
    itemBackgroundColor: { type: String, default: void 0 },
    isArtboardProject: { type: Boolean, default: !1 },
    loading: { type: Boolean, default: !1 },
    viewOnly: { type: Boolean, default: !1 },
    enterpriseLicenseCheckFailed: { type: Boolean, default: !1 },
    disableReordering: { type: Boolean, default: !1 },
  },
  computed: {
    expoProject() {
      return this.$store.getters.currentProject;
    },
    artboardsOrder: {
      get() {
        return this.expoProject ? this.expoProject.artboardsOrder : [];
      },
      set(t) {
        this.expoProject && this.$store.commit(new zo(this.shortcut, t));
      },
    },
    artboardsOrdered() {
      return this.expoProject
        ? Za(this.items, this.artboardsOrder)
        : this.items.reduce((e, r) => ((e[r.id] = r), e), {});
    },
    gridStyle() {
      return {
        gridTemplateColumns: this.listView
          ? "1fr"
          : `repeat(auto-fit, ${this.itemWidth})`,
      };
    },
    itemStyle() {
      return {
        height: this.itemHeight,
        cursor: this.draggingEnabled ? "grab" : "default",
      };
    },
    archiveMode() {
      return !!this.expoProject && this.expoProject.archiveMode;
    },
    draggingEnabled() {
      return (
        !this.disableReordering &&
        this.isArtboardProject &&
        !!this.expoProject &&
        !this.archiveMode
      );
    },
    draggableOptions() {
      return {
        disabled: !this.draggingEnabled,
        filter: ".disable-drag-handle",
      };
    },
  },
  async mounted() {
    this.isArtboardProject &&
      (await this.$store.dispatch(new Ht(this.shortcut)));
  },
  methods: {
    async artboardOrderChanged(t) {
      if (!this.isArtboardProject) return;
      const { newDraggableIndex: e } = t;
      if (e === void 0) return;
      const r = this.artboardsOrder[e];
      if (r === void 0) return;
      const o = this.artboardsOrder[e + 1];
      await this.$store.dispatch(new Go(this.shortcut, r, o, !1));
    },
  },
});
var Qa = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "Draggable",
        e._b(
          {
            staticClass: "ax-artboard-grid",
            style: e.gridStyle,
            on: { end: e.artboardOrderChanged },
            model: {
              value: e.artboardsOrder,
              callback: function (o) {
                e.artboardsOrder = o;
              },
              expression: "artboardsOrder",
            },
          },
          "Draggable",
          e.draggableOptions,
          !1
        ),
        e._l(e.artboardsOrdered, function (o) {
          return r("AxArtboardGridItem", {
            key: o.id,
            style: e.itemStyle,
            attrs: {
              item: o,
              "background-color": e.itemBackgroundColor,
              "is-artboard-project": e.isArtboardProject,
              "view-only": e.viewOnly,
              "enterprise-license-check-failed": e.enterpriseLicenseCheckFailed,
              loading: e.loading,
            },
          });
        }),
        1
      )
    );
  },
  Ja = [],
  ei = v(Ka, Qa, Ja, !1, null, "b04c4e57", null, null);
const ti = ei.exports,
  ri = g.extend({
    components: { AxButton: E, AxIcon: H },
    data() {
      return { activeTab: 3 };
    },
    computed: {
      activeTabs() {
        return [
          {
            type: 3,
            name: "Images",
            active: !!this.$scopedSlots.images,
            icon: "images",
          },
          {
            type: 2,
            name: "Figma",
            active: !!this.$scopedSlots.figma,
            icon: "figmaapp",
          },
          {
            type: 0,
            name: "Sketch",
            active: !!this.$scopedSlots.sketch,
            icon: "sketchapp",
          },
          {
            type: 1,
            name: "Adobe XD",
            active: !!this.$scopedSlots.adobeXD,
            icon: "xdapp",
          },
        ].filter((e) => e.active);
      },
      activeSketchTab() {
        return this.activeTab === 0;
      },
      activeAdobeXDTab() {
        return this.activeTab === 1;
      },
      activeFigmaTab() {
        return this.activeTab === 2;
      },
      activeImagesTab() {
        return this.activeTab === 3;
      },
    },
    methods: {
      projectEmptyTabClick(t) {
        this.activeTab = t;
      },
    },
  });
var oi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-project-empty" }, [
        e.activeTabs.length > 1
          ? r(
              "ul",
              { staticClass: "ax-project-empty-tabs desktop-app-no-drag" },
              e._l(e.activeTabs, function (o, s) {
                return r(
                  "li",
                  {
                    key: s,
                    staticClass: "ax-project-empty-tabs__item",
                    class: { "tab-active": o.type === e.activeTab },
                  },
                  [
                    r(
                      "AxButton",
                      {
                        staticClass: "tab-button",
                        attrs: { color: "link", block: "" },
                        on: {
                          click: function (n) {
                            return e.projectEmptyTabClick(o.type);
                          },
                        },
                      },
                      [
                        r("AxIcon", { attrs: { name: o.icon } }),
                        r("div", { staticClass: "tab-link-content" }, [
                          e._v(" " + e._s(o.name) + " "),
                        ]),
                      ],
                      1
                    ),
                  ],
                  1
                );
              }),
              0
            )
          : e._e(),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeSketchTab,
                expression: "activeSketchTab",
              },
            ],
          },
          [e._t("sketch")],
          2
        ),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeAdobeXDTab,
                expression: "activeAdobeXDTab",
              },
            ],
          },
          [e._t("adobeXD")],
          2
        ),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeFigmaTab,
                expression: "activeFigmaTab",
              },
            ],
          },
          [e._t("figma")],
          2
        ),
        r(
          "div",
          {
            directives: [
              {
                name: "show",
                rawName: "v-show",
                value: e.activeImagesTab,
                expression: "activeImagesTab",
              },
            ],
          },
          [e._t("images")],
          2
        ),
      ])
    );
  },
  si = [],
  ni = v(ri, oi, si, !1, null, "eaf918e6", null, null);
const ai = ni.exports,
  ii = g.extend({
    components: {
      AxArtboardProjectEmptyTabs: ai,
      AxButton: E,
      AxIcon: H,
      PortalTarget: xr,
    },
    props: { project: Lt({ required: !0 }) },
    data() {
      return {
        desktopUrl: Xo,
        sketchPluginUrl: Yo,
        xdPluginUrl: Zo,
        figmaPluginUrl: Ko,
        isElectron: Qo,
      };
    },
  }),
  _r = "/app/assets/exporting-from-sketch-y3_3FlXr.png",
  li = "/app/assets/exporting-from-sketch@2x-DLaVw__B.png",
  ci = "/app/assets/exporting-from-sketch@3x-1axMi43A.png",
  br = "/app/assets/exporting-from-adobe-xd-yHF7dzb4.png",
  di = "/app/assets/exporting-from-adobe-xd@2x-DRwdxJQM.png",
  ui = "/app/assets/exporting-from-adobe-xd@3x-D9A-ZHON.png",
  yr = "/app/assets/exporting-from-figma-CnW-hBe2.png",
  pi = "/app/assets/exporting-from-figma@2x-CqyNgSZi.png",
  hi = "/app/assets/exporting-from-figma@3x-DSjkoeUK.png";
var mi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "row justify-content-center pt-5" }, [
        r(
          "div",
          { staticClass: "col-auto" },
          [
            r("AxArtboardProjectEmptyTabs", {
              scopedSlots: e._u([
                {
                  key: "sketch",
                  fn: function () {
                    return [
                      r("div", { staticClass: "instructions" }, [
                        r("div", { staticClass: "instructions__title" }, [
                          e._v(" 创建一个基于 Sketch 的项目 "),
                        ]),
                        e.isElectron
                          ? e._e()
                          : r("div", { staticClass: "instruction" }, [
                              r("div", { staticClass: "instruction__title" }, [
                                r("span", [e._v("下载 Axure 云应用程序")]),
                              ]),
                              r(
                                "div",
                                { staticClass: "instruction__description" },
                                [
                                  r(
                                    "AxButton",
                                    {
                                      staticClass: "download-button",
                                      attrs: {
                                        color: "upload",
                                        href: e.desktopUrl,
                                      },
                                    },
                                    [
                                      r("AxIcon", {
                                        attrs: { name: "download" },
                                      }),
                                      e._v(" 下载 "),
                                    ],
                                    1
                                  ),
                                ],
                                1
                              ),
                            ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [e._v("安装应用程序")]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              e._v(
                                " 如果您尚未安装适用于 Sketch 的 Axure 插件，系统将提示您进行安装。 "
                              ),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [
                              e._v("Select Artboards and Export to Cloud"),
                            ]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              r("img", {
                                attrs: {
                                  src: _r,
                                  srcset: _r + ", " + li + " 2x, " + ci + " 3x",
                                  alt: "Exporting screens from Sketch",
                                },
                              }),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instructions__footer" }, [
                          e._v(
                            " 如果你在 Sketch 菜单中没有看到该插件，请安装。 "
                          ),
                          r("a", { attrs: { href: e.sketchPluginUrl } }, [
                            e._v("点击下载"),
                          ]),
                          e._v(". "),
                        ]),
                      ]),
                    ];
                  },
                  proxy: !0,
                },
                {
                  key: "adobeXD",
                  fn: function () {
                    return [
                      r("div", { staticClass: "instructions" }, [
                        r("div", { staticClass: "instructions__title" }, [
                          e._v(" 创建一个基于 Adobe XD 的项目 "),
                        ]),
                        e.isElectron
                          ? e._e()
                          : r("div", { staticClass: "instruction" }, [
                              r("div", { staticClass: "instruction__title" }, [
                                r("span", [e._v("下载 Axure 云应用程序")]),
                              ]),
                              r(
                                "div",
                                { staticClass: "instruction__description" },
                                [
                                  r(
                                    "AxButton",
                                    {
                                      staticClass: "download-button",
                                      attrs: {
                                        color: "upload",
                                        href: e.desktopUrl,
                                      },
                                    },
                                    [
                                      r("AxIcon", {
                                        attrs: { name: "download" },
                                      }),
                                      e._v(" 下载 "),
                                    ],
                                    1
                                  ),
                                ],
                                1
                              ),
                            ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [e._v("安装应用程序")]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              e._v(
                                " 如果您尚未安装适用于 XD 的 Axure 插件，系统将提示您进行安装。 "
                              ),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [e._v("选择画板并导出到云端")]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              r("img", {
                                attrs: {
                                  src: br,
                                  srcset:
                                    br + " 1x, " + di + " 2x, " + ui + " 3x",
                                  alt: "从 Adobe XD 导出屏幕",
                                },
                              }),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instructions__footer" }, [
                          e._v(" 如果您在 XD 菜单中未看到该插件，请进行安装 "),
                          r(
                            "a",
                            {
                              attrs: {
                                target: "_blank",
                                rel: "noopener",
                                href: e.xdPluginUrl,
                              },
                            },
                            [e._v("点击下载")]
                          ),
                          e._v(". "),
                        ]),
                      ]),
                    ];
                  },
                  proxy: !0,
                },
                {
                  key: "figma",
                  fn: function () {
                    return [
                      r("div", { staticClass: "instructions" }, [
                        r("div", { staticClass: "instructions__title" }, [
                          e._v(" 创建一个基于 Figma 的项目 "),
                        ]),
                        e.isElectron
                          ? e._e()
                          : r("div", { staticClass: "instruction" }, [
                              r("div", { staticClass: "instruction__title" }, [
                                r("span", [e._v("下载 Axure 云应用程序")]),
                              ]),
                              r(
                                "div",
                                { staticClass: "instruction__description" },
                                [
                                  r(
                                    "AxButton",
                                    {
                                      staticClass: "download-button",
                                      attrs: {
                                        color: "upload",
                                        href: e.desktopUrl,
                                      },
                                    },
                                    [
                                      r("AxIcon", {
                                        attrs: { name: "download" },
                                      }),
                                      e._v(" 下载 "),
                                    ],
                                    1
                                  ),
                                ],
                                1
                              ),
                            ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [e._v("安装应用程序")]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              e._v(
                                " 如果你尚未安装适用于 Figma 的 Axure 插件，系统将提示你进行安装。 "
                              ),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instruction" }, [
                          r("div", { staticClass: "instruction__title" }, [
                            r("span", [e._v("选择画板并导出到云端")]),
                          ]),
                          r(
                            "div",
                            { staticClass: "instruction__description" },
                            [
                              r("img", {
                                staticClass: "exporting-figma-img",
                                attrs: {
                                  src: yr,
                                  srcset: yr + ", " + pi + " 2x, " + hi + " 3x",
                                  alt: "Exporting screens from Figma",
                                },
                              }),
                            ]
                          ),
                        ]),
                        r("div", { staticClass: "instructions__footer" }, [
                          e._v(
                            " 如果你在 Figma 菜单中没有看到该插件，请安装。 "
                          ),
                          r(
                            "a",
                            {
                              attrs: {
                                target: "_blank",
                                rel: "noopener",
                                href: e.figmaPluginUrl,
                              },
                            },
                            [e._v("点击下载")]
                          ),
                          e._v(". "),
                        ]),
                      ]),
                    ];
                  },
                  proxy: !0,
                },
                {
                  key: "images",
                  fn: function () {
                    return [
                      r("div", { staticClass: "instructions" }, [
                        r("div", { staticClass: "instructions__title" }, [
                          e._v(" 创建一个基于图像的项目 "),
                        ]),
                      ]),
                      r(
                        "div",
                        { staticClass: "upload-images" },
                        [
                          r("PortalTarget", {
                            attrs: {
                              name: "asset-uploader",
                              slim: "",
                              "slot-props": { hideHelp: !0 },
                            },
                          }),
                        ],
                        1
                      ),
                    ];
                  },
                  proxy: !0,
                },
              ]),
            }),
          ],
          1
        ),
      ])
    );
  },
  fi = [],
  gi = v(ii, mi, fi, !1, null, "0771905b", null, null);
const vi = gi.exports,
  _i = { type: Object, required: !0 },
  bi = g.extend({
    props: { project: _i },
    computed: {
      isRpProject() {
        return ft(this.project);
      },
      isTeamProject() {
        return jr(this.project);
      },
    },
  });
var yi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-project-no-pages" }, [
        r("h2", { staticClass: "ax-project-no-pages-title" }, [
          e._v(" Please select pages to generate "),
        ]),
        r("div", { staticClass: "ax-project-no-pages-instructions" }, [
          e.isRpProject && !e.isTeamProject
            ? r("p", [
                e._v(
                  " No pages were generated. In Axure RP, open the publish dialog (Publish > Publish to"
                ),
                r("br"),
                e._v(" Cloud) to select the pages to generate. "),
              ])
            : e.isTeamProject
            ? r("p", [
                e._v(
                  " No pages were generated. In Axure RP, open the publish dialog (Publish > Publish to"
                ),
                r("br"),
                e._v(
                  " Cloud) to select the pages to generate. Send changes or check the generator in. "
                ),
              ])
            : e._e(),
        ]),
        e._m(0),
      ])
    );
  },
  wi = [
    function () {
      var t = this,
        e = t._self._c;
      return (
        t._self._setupProxy,
        e("div", [
          t._v(" If you have any questions, please email us at "),
          e(
            "a",
            {
              staticClass: "text-underline",
              attrs: { href: "mailto:support@axure.com" },
            },
            [t._v("support@axure.com")]
          ),
          t._v(". "),
        ])
      );
    },
  ],
  xi = v(bi, yi, wi, !1, null, null, null, null);
const Ci = xi.exports,
  Pi = g.extend({
    components: { AxIcon: H },
    props: { backgroundColor: { type: String, required: !1, default: void 0 } },
    computed: {
      styleProps() {
        return { backgroundColor: this.backgroundColor || "#858585" };
      },
    },
  });
var ji = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "span",
        { staticClass: "ax-plus-circle", style: e.styleProps },
        [r("AxIcon", { staticClass: "icon-plus", attrs: { name: "plus" } })],
        1
      )
    );
  },
  ki = [],
  Ai = v(Pi, ji, ki, !1, null, "2ea389cc", null, null);
const Si = Ai.exports,
  $i = g.extend({
    directives: { onClickAway: Jo },
    components: {
      AxDropdownButton: vt,
      AxButton: E,
      AxPlusCircle: Si,
      PortalTarget: xr,
    },
    props: { project: Lt({ required: !0 }) },
    data() {
      return { menuOpened: !1, AnalyticsClickEvents: We };
    },
    methods: {
      toggleAddScreenBtn(t) {
        this.menuOpened = t;
      },
      deactivate(t) {
        if (t) {
          const e = t.target;
          if (e instanceof HTMLInputElement && e.type === "file") return;
        }
        this.menuOpened = !1;
      },
    },
  });
var Ti = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        {
          staticClass: "floating-fixed-container",
          class: e.AnalyticsClickEvents.AddAsset.eventClass,
        },
        [
          r(
            "AxDropdownButton",
            {
              directives: [
                {
                  name: "on-click-away",
                  rawName: "v-on-click-away",
                  value: e.deactivate,
                  expression: "deactivate",
                },
              ],
              attrs: {
                "control-manually": "",
                top: "",
                right: "",
                color: "link",
                "content-class": "add-screen-dialog",
                "toggle-callback": e.toggleAddScreenBtn,
                "close-on-content-click": !1,
                active: e.menuOpened,
                distance: 10,
              },
              scopedSlots: e._u([
                {
                  key: "activator",
                  fn: function () {
                    return [
                      r(
                        "AxButton",
                        {
                          staticClass: "add-screen-button",
                          attrs: {
                            color: "upload",
                            title: "Add Screens",
                            circle: "",
                          },
                          on: {
                            keydown: function (o) {
                              return !o.type.indexOf("key") &&
                                e._k(o.keyCode, "esc", 27, o.key, [
                                  "Esc",
                                  "Escape",
                                ])
                                ? null
                                : e.deactivate.apply(null, arguments);
                            },
                          },
                        },
                        [
                          r("AxPlusCircle", {
                            staticClass: "add-screen-plus-icon",
                            attrs: { "background-color": "transparent" },
                          }),
                        ],
                        1
                      ),
                    ];
                  },
                  proxy: !0,
                },
              ]),
            },
            [
              r(
                "div",
                [
                  r("PortalTarget", {
                    attrs: {
                      name: "asset-uploader",
                      slim: "",
                      "slot-props": {
                        deactivate: e.deactivate,
                        key: Date.now(),
                        showClose: !0,
                      },
                    },
                  }),
                ],
                1
              ),
            ]
          ),
        ],
        1
      )
    );
  },
  Ii = [],
  Oi = v($i, Ti, Ii, !1, null, "59a3fde8", null, null);
const Ei = Oi.exports,
  Di = g.extend({
    props: {
      min: { type: Number, default: 0 },
      max: { type: Number, default: 100 },
      value: { type: Number, required: !0 },
      step: { type: Number, default: 1 },
      change: { type: Function, default: es },
    },
    methods: {
      handleInput(t) {
        t.target instanceof HTMLInputElement &&
          this.$emit("input", t.target.value);
      },
      handleChange(t) {
        t.target instanceof HTMLInputElement && this.change(t.target.value);
      },
    },
  });
var Bi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-slider" }, [
        r("input", {
          staticClass: "slider",
          attrs: { type: "range", min: e.min, max: e.max, step: e.step },
          domProps: { value: e.value },
          on: { input: e.handleInput, change: e.handleChange },
        }),
      ])
    );
  },
  Mi = [],
  Ri = v(Di, Bi, Mi, !1, null, "321008b8", null, null);
const Ni = Ri.exports,
  Fi = g.extend({
    components: { AxButton: E, AxButtonGroup: ts, AxIcon: H, AxSlider: Ni },
    props: {
      value: { type: Number, required: !0 },
      min: { type: Number, default: 0 },
      max: { type: Number, default: 100 },
      gridSize: { type: Number, default: 0 },
      listSize: { type: Number, default: 100 },
      showModeControls: { type: Boolean, default: !1 },
    },
    computed: {
      zoom: {
        get() {
          return this.value;
        },
        set(t) {
          this.$emit("input", t);
        },
      },
    },
    methods: {
      changed(t) {
        this.$emit("change", t);
      },
    },
  });
var Ui = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        [
          r(
            "span",
            { staticClass: "slider" },
            [
              r("AxSlider", {
                attrs: { min: e.min, max: e.max, step: 1, change: e.changed },
                model: {
                  value: e.zoom,
                  callback: function (o) {
                    e.zoom = e._n(o);
                  },
                  expression: "zoom",
                },
              }),
            ],
            1
          ),
          e.showModeControls
            ? r(
                "AxButtonGroup",
                [
                  r(
                    "AxButton",
                    {
                      staticClass: "grid-view-button",
                      attrs: { color: "link", small: "", title: "Grid View" },
                      on: {
                        click: function (o) {
                          return e.$emit("input", e.value);
                        },
                      },
                    },
                    [r("AxIcon", { attrs: { name: "grid" } })],
                    1
                  ),
                  r(
                    "AxButton",
                    {
                      staticClass: "list-view-button",
                      attrs: { color: "link", small: "", title: "List View" },
                      on: {
                        click: function (o) {
                          return e.$emit("list-view");
                        },
                      },
                    },
                    [r("AxIcon", { attrs: { name: "list" } })],
                    1
                  ),
                ],
                1
              )
            : e._e(),
        ],
        1
      )
    );
  },
  Li = [],
  Hi = v(Fi, Ui, Li, !1, null, "4462c3fe", null, null);
const Vi = Hi.exports,
  qi = {
    type: Object,
    required: !0,
    validator(t) {
      return Er(t);
    },
  },
  Wi = g.extend({
    components: {
      AxArtboardProjectEmpty: vi,
      AxArtboardProjectNoPages: Ci,
      AxArtboardGrid: ti,
      AxButton: E,
      AxDate: kr,
      AxGridSizeControl: Vi,
      AxIcon: H,
      AxInputSearch: xs,
      AxFloatingAddAssetBtn: Ei,
      AxSpinnerImage: rs,
      AxTooltip: $r,
      AxUnreadMentionsIndicator: os,
      RouterLink: wo,
    },
    mixins: [Ut],
    props: { project: qi },
    data() {
      const t = new Map([["name", () => !0]]),
        e = new tr([], t);
      return {
        enterpriseLicenseCheckFailedMessage: Ir,
        loading: !0,
        firstLoadFinished: !1,
        loadingImages: !1,
        fetched: !1,
        artboards: [],
        zoom: 300,
        listView: !1,
        searchQuery: "",
        searchEngine: e,
        searchFields: t,
        windowWidth: 0,
        windowHeight: 0,
        lastFetch: 0,
        isActivated: !0,
        commentsState: {
          HasNewComments: !1,
          NewCommentsCount: 0,
          CurrentIssueCode: "",
          UnreadMentionsCount: {},
        },
        commentsLoading: !0,
        fetching: void 0,
        getCommentsStatePromise: void 0,
      };
    },
    computed: {
      storeCommentsState() {
        const t = this.$store.state.fs.nodes[this.project.id];
        if (t && t.listingNode && t.listingNode.NotificationState)
          return t.listingNode.NotificationState;
      },
      storeCommentsCount() {
        return this.storeCommentsState
          ? this.storeCommentsState.TotalCommentsCount
          : 0;
      },
      isEmpty() {
        return this.isArtboardProject
          ? this.isArtboardProjectEmpty
          : this.fetched && this.artboards.length === 0;
      },
      currentProject() {
        return this.$store.getters.currentProject;
      },
      canAccessBuild() {
        return (
          this.isArtboardProject &&
          !this.project.viewOnly &&
          !this.isLicenseExpired
        );
      },
      isArtboardProjectEmpty() {
        return !!this.currentProject && !this.currentProject.hasArtboards;
      },
      lastModified() {
        return (
          (!!this.currentProject && this.currentProject.lastSavedDate) || 0
        );
      },
      itemWidth() {
        return `${this.zoom}px`;
      },
      itemHeight() {
        return `${this.zoom}px`;
      },
      rpPageRoute() {
        return { name: T["expo.inspect"].name, params: { screen: "0" } };
      },
      buildRoute() {
        return { name: T["expo.build.all"].name };
      },
      disableReordering() {
        return this.project.viewOnly || this.isSearching;
      },
      isSearching() {
        return !!this.searchQuery;
      },
      artboardItems() {
        return this.isSearching
          ? this.searchEngine.doSearch(this.searchQuery).map((t) => t.item)
          : this.artboards;
      },
      totalArtboards() {
        return this.artboardItems.length;
      },
      pagesOrWidgets() {
        return this.project.shortcutType === ss.Lib
          ? this.totalArtboards > 1
            ? "widgets"
            : "widget"
          : this.totalArtboards > 1
          ? "pages"
          : "page";
      },
      isArtboardProject() {
        return ze(this.project);
      },
      isRpProject() {
        return ft(this.project);
      },
      artboardsExpired() {
        return this.lastFetch !== this.lastModified;
      },
      itemBackgroundColor() {
        if (this.isArtboardProject && this.currentProject) {
          const { platform: t } = this.currentProject;
          if (t) return t.IsUsingBackgroundColor ? t.BackgroundColor : "#fff";
        }
      },
      disableBuild() {
        return this.$store.getters.enterpriseLicenseCheckFailed;
      },
      totalCommentsCount() {
        return this.commentsState.TotalCommentsCount
          ? this.commentsState.TotalCommentsCount
          : 0;
      },
      newCommentsCount() {
        return this.commentsState.NewCommentsCount;
      },
      hasNewComments() {
        return this.newCommentsCount > 0;
      },
      hasUnreadCommentsMentions() {
        return Or(this.commentsState) > 0;
      },
      commentsCountMessage() {
        let t = `${this.totalCommentsCount} 评论`;
        return (
          this.totalCommentsCount !== 1 && (t),
          this.newCommentsCount > 0 && (t += `, ${this.newCommentsCount} new`),
          t
        );
      },
      currentCommentArtboard() {
        let t;
        if (this.commentsState.CurrentCommentPageId) {
          const e = this.artboards.find(
            (r) => r.originalId === this.commentsState.CurrentCommentPageId
          );
          e && (t = e.id);
        }
        return t;
      },
      commentUrl() {
        let t,
          e = "new";
        if (
          (this.currentCommentArtboard
            ? ((t = this.currentCommentArtboard),
              this.commentsState.CurrentIssueCode &&
                (e = this.commentsState.CurrentIssueCode))
            : this.artboards.length > 0 && (t = this.artboards[0].id),
          t)
        )
          return {
            name: T["expo.preview"].name,
            params: { screen: t },
            query: { comment: e },
          };
        const r = this.$route.params;
        return { name: T["project.overview"].name, params: r };
      },
      isReadOnlyMode() {
        const { axShareConfig: t } = this.$store.state;
        return t ? t.ReadOnlyMode : !1;
      },
    },
    watch: {
      project() {
        this.fetchArtboards();
      },
      storeCommentsCount() {
        this.storeCommentsState &&
          (this.commentsState = this.storeCommentsState);
      },
      async lastModified() {
        await this.updateIfExpired();
      },
      async artboards() {
        await this.getFullCommentsState();
      },
    },
    async created() {
      await Promise.all([this.fetchArtboards(), this.getFullCommentsState()]),
        (this.firstLoadFinished = !0);
    },
    async activated() {
      (this.isActivated = !0),
        this.updateIfExpired(),
        await this.getFullCommentsState(),
        await this.$store.dispatch(new ns(this.project.id));
    },
    deactivated() {
      this.isActivated = !1;
    },
    methods: {
      searchQueryChanged(t) {
        this.searchQuery = t;
      },
      async updateIfExpired() {
        this.artboardsExpired &&
          this.isActivated &&
          (await this.fetchArtboards());
      },
      async getFullCommentsState() {
        if (this.getCommentsStatePromise) return this.getCommentsStatePromise;
        const t = async () => {
          (this.commentsLoading = !0),
            (this.commentsState = await as(this.project.id)),
            this.$store.commit(new Dr(this.project.id, this.commentsState)),
            (this.commentsLoading = !1);
        };
        this.getCommentsStatePromise = t();
        try {
          await this.getCommentsStatePromise;
        } finally {
          this.getCommentsStatePromise = void 0;
        }
      },
      async fetchArtboards() {
        if (this.fetching) return this.fetching;
        const t = async () => {
            const { id: r } = this.project;
            this.loading = !0;
            const o = await is(r);
            if (o.Shortcut.ShortcutState !== ue.Ok) {
              await this.$store.dispatch(new gt(r));
              return;
            }
            o.Pages &&
              (this.artboards = o.Pages.map((s) => ({
                id: s.Id,
                name: s.Name,
                thumbnailsSet: s.Thumbnails,
                originalId: s.OriginalId,
                failedToGenerate: s.FailedToGenerate,
              }))),
              (this.searchEngine = new tr(this.artboards, this.searchFields)),
              (this.loading = !1),
              (this.fetched = !0),
              (this.lastFetch = this.lastModified);
          },
          e = {
            action: async () => {
              await t();
            },
          };
        try {
          (this.fetching = this.$store.dispatch(new Ar(e))),
            await this.fetching;
        } finally {
          this.fetching = void 0;
        }
      },
    },
  });
var zi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "d-flex flex-column h-100" }, [
        !e.isEmpty || (e.isEmpty && e.isRpProject)
          ? r("div", { staticClass: "row pages-info-controls" }, [
              r("div", { staticClass: "col-auto" }, [
                r("div", { staticClass: "row" }, [
                  r("div", { staticClass: "col col-auto" }, [
                    r(
                      "span",
                      { staticClass: "pages-info-text text-nowrap" },
                      [
                        e.searchQuery
                          ? r("span", [e._v(" 搜索结果 • ")])
                          : e._e(),
                        e.fetched
                          ? [
                              e._v(
                                " " +
                                  e._s(e.totalArtboards) +
                                  " " +
                                  e._s(e.pagesOrWidgets) +
                                  " • "
                              ),
                            ]
                          : e._e(),
                        e._v(" 上次更新 "),
                        r("AxDate", {
                          attrs: { value: e.project.updated, format: "P" },
                        }),
                      ],
                      2
                    ),
                  ]),
                ]),
              ]),
              r(
                "div",
                { staticClass: "col" },
                [
                  e.commentsLoading
                    ? e._e()
                    : r("RouterLink", { attrs: { to: e.commentUrl } }, [
                        r(
                          "span",
                          {
                            staticClass:
                              "comments-info text-nowrap d-flex align-items-center",
                            class: {
                              "new-comments":
                                e.hasNewComments || e.hasUnreadCommentsMentions,
                            },
                          },
                          [
                            r("AxIcon", {
                              staticClass: "icon-margin comments-icon",
                              attrs: { name: "baloon" },
                            }),
                            e._v(e._s(e.commentsCountMessage) + " "),
                            e.hasUnreadCommentsMentions
                              ? r("AxUnreadMentionsIndicator")
                              : e._e(),
                          ],
                          1
                        ),
                      ]),
                ],
                1
              ),
              r(
                "div",
                { staticClass: "col-auto text-end" },
                [
                  r("AxGridSizeControl", {
                    attrs: {
                      min: 200,
                      "grid-size": 300,
                      "list-size": 600,
                      max: 600,
                    },
                    model: {
                      value: e.zoom,
                      callback: function (o) {
                        e.zoom = e._n(o);
                      },
                      expression: "zoom",
                    },
                  }),
                ],
                1
              ),
              r(
                "div",
                { staticClass: "col-3 text-end" },
                [
                  r("AxInputSearch", {
                    staticClass: "input-search",
                    attrs: { value: e.searchQuery },
                    on: { input: e.searchQueryChanged },
                  }),
                ],
                1
              ),
            ])
          : e._e(),
        e.isEmpty
          ? e._e()
          : r("div", { staticClass: "row" }, [
              r(
                "div",
                { staticClass: "col-12 d-flex flex-column" },
                [
                  r(
                    "AxTooltip",
                    {
                      attrs: {
                        title: e.enterpriseLicenseCheckFailedMessage,
                        disabled: !e.disableBuild,
                      },
                    },
                    [
                      r(
                        "div",
                        { staticClass: "col-auto p-0 mb-3 mt-2" },
                        [
                          e.canAccessBuild
                            ? r(
                                "AxButton",
                                {
                                  attrs: {
                                    id: "btnBuildPrototype",
                                    to: e.buildRoute,
                                    disabled: e.disableBuild,
                                    color: "secondary",
                                    medium: "",
                                  },
                                },
                                [e._v(" 构建原型 ")]
                              )
                            : e._e(),
                        ],
                        1
                      ),
                    ]
                  ),
                ],
                1
              ),
            ]),
        r("div", { staticClass: "row h-100" }, [
          r(
            "div",
            { ref: "grid", staticClass: "col-12 d-flex flex-column" },
            [
              r(
                "div",
                { staticClass: "flex-grow-1" },
                [
                  e.isEmpty && e.isRpProject && !e.project.viewOnly
                    ? r("AxArtboardProjectNoPages", {
                        attrs: { project: e.project },
                      })
                    : (e.isEmpty && !e.project.viewOnly) || e.loadingImages
                    ? r("AxArtboardProjectEmpty", {
                        attrs: { project: e.project },
                        on: {
                          "files-added": function (o) {
                            e.loadingImages = !0;
                          },
                          "queue-complete": function (o) {
                            e.loadingImages = !1;
                          },
                        },
                      })
                    : e.fetched
                    ? r("AxArtboardGrid", {
                        staticClass: "artboard-grid",
                        attrs: {
                          "list-view": e.listView,
                          items: e.artboardItems,
                          "item-width": e.itemWidth,
                          "item-height": e.itemHeight,
                          "item-background-color": e.itemBackgroundColor,
                          "disable-reordering": e.disableReordering,
                          "is-artboard-project": e.isArtboardProject,
                          "view-only": e.project.viewOnly,
                          "enterprise-license-check-failed": e.disableBuild,
                          loading: e.loading,
                          shortcut: e.project.shortcut,
                        },
                      })
                    : e._e(),
                ],
                1
              ),
              e.canAccessBuild && !e.isEmpty && !e.loadingImages
                ? r("AxFloatingAddAssetBtn", {
                    staticClass: "flex-grow-0",
                    attrs: { project: e.project },
                  })
                : e._e(),
            ],
            1
          ),
        ]),
      ])
    );
  },
  Gi = [],
  Xi = v(Wi, zi, Gi, !1, null, "ac776d42", null, null);
const Yi = Xi.exports,
  Zi = { type: Object, required: !0 },
  Ki = g.extend({
    components: { AxProjectFilePicker: ls },
    props: { project: Zi },
    data() {
      return {
        file: null,
        uploading: !1,
        uploadCanceled: !1,
        errors: [],
        canceler: null,
        progress: null,
      };
    },
    methods: {
      async fileChanged(t) {
        if (t && typeof t.name == "string" && this.errors.length === 0) {
          if (this.$store.getters.enterpriseLicenseCheckFailed) {
            this.errors = [Ir];
            return;
          }
          (this.uploading = !0),
            (this.uploadCanceled = !1),
            (this.progress = { current: 0, total: 0, lengthComputable: !1 });
          const e = { fileData: this.file };
          try {
            await cs(
              this.project.id,
              e,
              (r) => {
                this.canceler = r;
              },
              (r) => {
                this.uploadCanceled ||
                  (this.progress = {
                    current: r.loaded,
                    total: r.total ?? 0,
                    lengthComputable: !!r.total,
                  });
              }
            ),
              await this.$store.dispatch(new gt(this.project.id));
          } finally {
            this.clearUpload();
          }
        }
      },
      fileAccepted() {
        this.errors = [];
      },
      fileError(t) {
        this.errors = t;
      },
      cancelUpload() {
        this.uploading &&
          this.canceler &&
          (this.clearUpload(),
          (this.uploadCanceled = !0),
          this.canceler("Prototype file upload was canceled by user."));
      },
      clearUpload() {
        (this.progress = null), (this.uploading = !1);
      },
    },
  });
var Qi = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-project-no-pages" }, [
        r("h2", { staticClass: "ax-project-no-pages-title" }, [
          e._v(" 请上传一个 RP 文件 "),
        ]),
        r(
          "div",
          { staticClass: "ax-project-no-pages-file-picker" },
          [
            r("AxProjectFilePicker", {
              staticClass: "project-uploader m-0",
              attrs: { autofocus: "", "upload-progress": e.progress },
              on: {
                "file-accepted": e.fileAccepted,
                "file-error": e.fileError,
                "cancel-upload": e.cancelUpload,
                input: e.fileChanged,
              },
              model: {
                value: e.file,
                callback: function (o) {
                  e.file = o;
                },
                expression: "file",
              },
            }),
          ],
          1
        ),
        e._m(0),
      ])
    );
  },
  Ji = [
    function () {
      var t = this,
        e = t._self._c;
      return (
        t._self._setupProxy,
        e("div", [
          e("p", [
            t._v(
              '你还可以在 Axure RP 中通过点击 “共享” 来发布你的项目'
            ),
          ]),
          e("p", [
            t._v(" 新的 Axure RP? "),
            e(
              "a",
              {
                staticClass: "text-underline",
                attrs: {
                  href: "https://www.axure.com/",
                  target: "_blank",
                  rel: "noopener",
                },
              },
              [t._v("了解更多并下载")]
            ),
          ]),
        ])
      );
    },
  ],
  el = v(Ki, Qi, Ji, !1, null, null, null, null);
const tl = el.exports,
  rl = { type: Object, required: !0 },
  ol = g.extend({
    components: {
      AxProjectPages: Yi,
      AxProjectInfo: Yn,
      AxRpProjectNoPages: tl,
      ProjectOverviewGenerating: Bs,
      ProjectOverviewGenerationFailed: Us,
      ProjectOverviewRequiresRepublish: Ws,
    },
    props: { project: rl },
    computed: {
      currentProject() {
        return this.$store.getters.currentProject;
      },
      isArtboardProject() {
        return ze(this.project);
      },
      isArtboardProjectEmpty() {
        return !!this.currentProject && !this.currentProject.hasArtboards;
      },
      isEmpty() {
        return this.project.shortcutState === ue.Empty;
      },
      isGenerating() {
        return this.project.shortcutState === ue.Generating;
      },
      isGenerationFailed() {
        return this.project.shortcutState === ue.GenerationFailed;
      },
      requiresRepublish() {
        return this.wasLastPublishOnDemand && !this.onDemandAllowedAndEnabled;
      },
      wasLastPublishOnDemand() {
        return (
          this.project.listingNode &&
          this.project.listingNode.GenType === ds.SinglePage
        );
      },
      onDemandAllowedAndEnabled() {
        return (
          this.project.listingNode &&
          this.project.listingNode.AllowOndemand &&
          this.project.listingNode.OnDemandEnabled
        );
      },
    },
  });
var sl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "row h-100" }, [
        r("div", { staticClass: "col pages-wrapper h-100" }, [
          r("div", { staticClass: "col-12 h-100" }, [
            r(
              "div",
              { staticClass: "pages h-100" },
              [
                e.isGenerating
                  ? r("ProjectOverviewGenerating", {
                      attrs: { project: e.project },
                    })
                  : e.isGenerationFailed
                  ? r("ProjectOverviewGenerationFailed")
                  : e.requiresRepublish
                  ? r("ProjectOverviewRequiresRepublish")
                  : e.isEmpty
                  ? r("AxRpProjectNoPages", { attrs: { project: e.project } })
                  : r("AxProjectPages", { attrs: { project: e.project } }),
              ],
              1
            ),
          ]),
        ]),
        r("div", { staticClass: "col-auto p-0 h-100" }, [
          r(
            "div",
            { staticClass: "sidebar" },
            [r("AxProjectInfo", { attrs: { project: e.project } })],
            1
          ),
        ]),
      ])
    );
  },
  nl = [],
  al = v(ol, sl, nl, !1, null, "768dd231", null, null);
const il = al.exports,
  ll = g.extend({
    props: { iframe: { type: HTMLIFrameElement, default: null } },
    created() {
      window.addEventListener("message", this.handler);
    },
    beforeDestroy() {
      window.removeEventListener("message", this.handler);
    },
    methods: {
      handler(t) {
        const e = this.iframe;
        if (e && e.contentWindow && e.contentWindow === t.source) {
          let { data: r } = t;
          if (typeof r == "string")
            try {
              r = JSON.parse(t.data);
            } catch {
              return;
            }
          if (!r.key) return;
          this.$emit("message", r);
        }
      },
    },
    render(t) {
      return t("div", { style: { display: "none" } });
    },
  }),
  cl = null,
  dl = null;
var ul = v(ll, cl, dl, !1, null, null, null, null);
const Xt = ul.exports,
  pl = g.extend({
    components: { AxIframeListener: Xt },
    props: {
      screen: { type: String, default: "" },
      page: { type: String, default: "" },
      inspectMode: { type: Boolean, default: !0 },
      isActive: { type: Boolean, default: !1 },
    },
    data() {
      return {
        useContentRedirect: !1,
        startPage: this.page || this.screen,
        iframeSrcBase: "",
        iframeSrc: "",
        isGenerating: !1,
      };
    },
    computed: {
      iframeBridgeProps() {
        return this.$store.getters.iframeBridgeProps(M.Inspect);
      },
      iframe() {
        return this.iframeBridgeProps ? this.iframeBridgeProps.iframe : void 0;
      },
      bridgeReady() {
        return this.iframeBridgeProps
          ? this.iframeBridgeProps.iframeBridgeReady
          : !1;
      },
      iframeReady() {
        return this.iframeBridgeProps ? this.iframeBridgeProps.iframeReady : !1;
      },
      genComplete() {
        return !this.isGenerating;
      },
      project() {
        return this.$store.getters.current.node;
      },
    },
    watch: {
      async bridgeReady(t) {
        t === !0 &&
          (await this.$store.dispatch(
            new w(y.hidePlayerControls, void 0, M.Inspect)
          ));
      },
      async iframeReady(t) {
        t === !0 &&
          this.inspectMode &&
          (await this.$store.dispatch(new w(y.addHandoff, void 0, M.Inspect)),
          await this.$store.dispatch(
            new w(y.inspectorEnable, void 0, M.Inspect)
          ));
      },
      async inspectMode(t) {
        if (this.bridgeReady) {
          const e = t ? y.inspectorEnable : y.inspectorDisable;
          await this.$store.dispatch(new w(e, void 0, M.Inspect));
        }
      },
      async screen(t) {
        t && this.page !== t && (await this.selectPage(t));
      },
      isActive: {
        handler(t) {
          t && this.activated();
        },
        immediate: !0,
      },
    },
    beforeDestroy() {
      this.$store.commit(new lt(M.Inspect));
    },
    async mounted() {
      if (this.$route.hash) {
        const t = Br(this.$route.query, this.$route.hash);
        await this.$router.replace({ query: t, replace: !0 });
      }
      await this.setIframeSrc(),
        window.addEventListener("gesturestart", (t) => t.preventDefault()),
        window.addEventListener("gesturechange", (t) => t.preventDefault()),
        window.addEventListener("gestureend", (t) => t.preventDefault());
    },
    methods: {
      async setIframeSrc() {
        (this.isGenerating = !0), (this.startPage = this.screen || this.page);
        const t = this.$store.getters.currentPrototypeUrls;
        if (!t) return;
        const e = Mr(this.startPage, this.useContentRedirect, this.inspectMode),
          r = await Rr(),
          o = at.stringify({ ...r.Params, ...e });
        (this.iframeSrcBase = `${t.frame}/?${o}`),
          Nr(this.project) || (this.iframeSrcBase += `#${at.stringify(e)}`),
          (this.iframeSrc = `${this.iframeSrcBase}`),
          this.$nextTick(() => {
            this.setIframe();
          });
      },
      async selectPage(t) {
        await this.$store.dispatch(new w(y.selectPage, { pageId: t }));
      },
      async setIframe() {
        const t = this.$refs.inspectIframe;
        this.$store.commit(new lt(M.Inspect, t, this.iframeSrcBase));
      },
      async onMessage({ key: t }) {
        if (t === ne.bridgeReady) this.$store.commit(new Fr(M.Inspect));
        else if (t === ne.previewGenerationComplete) {
          this.isGenerating = !1;
          const { startPage: e } = this,
            { page: r } = this;
          e && e !== r && (await this.selectPage(e));
        }
      },
      async activated() {
        await this.selectPage(this.screen);
      },
    },
  });
var hl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "row h-100 g-0 ax-project-page" },
        [
          !e.iframeReady || !e.genComplete
            ? r("AxIframeListener", {
                attrs: { iframe: e.iframe },
                on: { message: e.onMessage },
              })
            : e._e(),
          r("div", { staticClass: "col" }, [
            e.iframeSrc
              ? r("iframe", {
                  ref: "inspectIframe",
                  attrs: { src: e.iframeSrc, frameborder: "0" },
                })
              : e._e(),
          ]),
        ],
        1
      )
    );
  },
  ml = [],
  fl = v(pl, hl, ml, !1, null, "276826ea", null, null);
const gl = fl.exports,
  vl = g.extend({
    computed: {
      currentProject() {
        return this.$store.getters.currentProject;
      },
      platform() {
        var t;
        return (t = this.currentProject) == null ? void 0 : t.platform;
      },
      zoom() {
        var t;
        return (
          ((t = this.currentProject) == null ? void 0 : t.projectZoom) ?? 0
        );
      },
      bgImgUrl() {
        var t;
        return ((t = this.currentProject) == null ? void 0 : t.bgImgUrl) ?? "";
      },
      canAddAssets() {
        return this.currentProject
          ? this.currentProject.mode === "expo" &&
              !this.currentProject.archiveMode
          : !1;
      },
      canModifyArtboards() {
        return this.currentProject
          ? this.currentProject.mode === "expo" &&
              !this.currentProject.archiveMode
          : !1;
      },
      anyArtboards() {
        return this.currentProject
          ? Object.keys(this.currentProject.artboards).length > 0
          : !1;
      },
      artboardsSelectedCount() {
        return this.currentProject
          ? Object.keys(this.currentProject.selectedArtboards).length
          : 0;
      },
      anyArtboardsSelected() {
        return this.currentProject
          ? Object.keys(this.currentProject.selectedArtboards).length > 0
          : !1;
      },
      artboardsOrdered() {
        if (!this.currentProject) return {};
        const t = {};
        return this.currentProject.artboardsOrder.reduce((e, r) => {
          var s;
          const o = (s = this.currentProject) == null ? void 0 : s.artboards[r];
          return o && (e[r] = o), e;
        }, t);
      },
    },
  }),
  _l = g.extend({ mixins: [vl] }),
  bl = _l.extend({
    components: { AxIframeListener: Xt },
    props: {
      project: { type: Object, required: !0 },
      screen: { type: String, default: "" },
      page: { type: String, default: "" },
      previewMode: { type: Boolean, default: !0 },
      isActive: { type: Boolean, default: !1 },
      inspectMode: { type: Boolean, default: !1 },
    },
    data() {
      const { route: t } = this.$store.state,
        e = this.screen || this.page;
      return {
        useContentRedirect: !1,
        startPage: e,
        isGenerating: !1,
        lastGenDate: 0,
        iframeSrcBase: window.location.origin,
        iframeSrc: `/prototype/show/${
          t ? t.params.shortcut : "about:blank"
        }?id=${e}&cl=1`,
      };
    },
    computed: {
      shortcut() {
        if (this.$store.getters.current.node.type === Cr.Shortcut)
          return this.project.shortcut;
      },
      lastModified() {
        return (
          (!!this.currentProject && this.currentProject.lastModifiedDate) || 0
        );
      },
      prototypeExpired() {
        return this.lastGenDate !== this.lastModified;
      },
      iframeBridgeProps() {
        return this.$store.getters.iframeBridgeProps(M.Preview);
      },
      iframe() {
        return this.iframeBridgeProps ? this.iframeBridgeProps.iframe : void 0;
      },
      bridgeReady() {
        return this.iframeBridgeProps
          ? this.iframeBridgeProps.iframeBridgeReady
          : !1;
      },
      iframeReady() {
        return this.iframeBridgeProps ? this.iframeBridgeProps.iframeReady : !1;
      },
      genComplete() {
        return !this.isGenerating;
      },
      lastSavedDate() {
        var t;
        return (
          ((t = this.currentProject) == null ? void 0 : t.lastSavedDate) ?? 0
        );
      },
    },
    watch: {
      async lastModified() {
        await this.updateIfExpired();
      },
      async lastSavedDate() {
        await this.postReloadToIframe();
      },
      isActive: {
        handler(t) {
          t && this.activated();
        },
        immediate: !0,
      },
      async iframeReady(t) {
        t === !0 &&
          this.inspectMode &&
          (await this.$store.dispatch(new w(y.addHandoff, void 0, M.Preview)),
          await this.$store.dispatch(
            new w(y.inspectorEnable, void 0, M.Preview)
          ));
      },
      async inspectMode(t) {
        if (this.bridgeReady) {
          const e = t ? y.inspectorEnable : y.inspectorDisable;
          await this.$store.dispatch(new w(e, void 0, M.Preview));
        }
      },
      async screen(t) {
        t && this.page !== t && (await this.selectPage(t));
      },
      async bridgeReady(t) {
        t === !0 &&
          (await this.$store.dispatch(
            new w(y.hidePlayerControls, void 0, M.Preview)
          ));
      },
    },
    beforeDestroy() {
      this.$store.commit(new lt(M.Preview));
    },
    async mounted() {
      if (this.$route.hash) {
        const t = Br(this.$route.query, this.$route.hash);
        await this.$router.replace({ query: t, replace: !0 });
      }
      await this.setIframeSrc(), await this.setupProject();
    },
    methods: {
      async genPreviewPrototype() {
        const t = it(this.currentProject);
        await this.$store.dispatch(
          new w(y.generateLocalExpoPreview, { expoProject: t }, M.Preview)
        ),
          (this.lastGenDate = this.lastModified);
      },
      async postReloadToIframe() {
        const t = it(this.currentProject);
        await this.$store.dispatch(new w(y.reload, t, M.Preview));
      },
      async updateIfExpired() {
        this.prototypeExpired && (await this.genPreviewPrototype());
      },
      async setIframeSrc() {
        this.startPage = this.page || this.screen;
        const t = this.$store.getters.currentPrototypeUrls;
        if (!t) return;
        const e = Mr(this.startPage, this.useContentRedirect, this.inspectMode),
          r = await Rr(),
          o = at.stringify({ ...r.Params, ...e });
        (this.iframeSrcBase = `${t.frame}/?${o}`),
          Nr(this.project) || (this.iframeSrcBase += `#${at.stringify(e)}`),
          (this.iframeSrc = `${this.iframeSrcBase}`),
          this.$nextTick(() => {
            this.setIframe();
          });
      },
      async setIframe() {
        const t = this.$refs.previewIframe;
        this.$store.commit(new lt(M.Preview, t, this.iframeSrcBase));
      },
      async setupProject() {
        const { route: t } = this.$store.state;
        t &&
          this.currentProject &&
          (await this.$store.dispatch(
            new us({
              mode: "expo",
              shortcut: t.params.shortcut,
              archiveMode: !1,
              resourceFolder: "",
              resourceAxureFolder: "",
              platform: this.currentProject.platform,
              bgImgUrl: this.currentProject.bgImgUrl,
            })
          ));
      },
      async selectPage(t) {
        await this.$store.dispatch(new w(y.selectPage, { pageId: t }));
      },
      async onMessage({ key: t }) {
        if (t === ne.bridgeReady) this.$store.commit(new Fr(M.Preview));
        else if (t === ne.previewGenerationComplete) {
          this.isGenerating = !1;
          const { startPage: e } = this,
            { page: r } = this;
          e && e !== r && (await this.selectPage(e));
        }
      },
      async activated() {
        await this.selectPage(this.screen), await this.updateIfExpired();
      },
    },
  });
var yl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "row h-100 g-0 ax-project-page" },
        [
          !e.iframeReady || !e.genComplete
            ? r("AxIframeListener", {
                attrs: { iframe: e.iframe },
                on: { message: e.onMessage },
              })
            : e._e(),
          r("div", { staticClass: "col" }, [
            e.iframeSrc
              ? r("iframe", {
                  ref: "previewIframe",
                  attrs: { src: e.iframeSrc, frameborder: "0" },
                })
              : e._e(),
          ]),
        ],
        1
      )
    );
  },
  wl = [],
  xl = v(bl, yl, wl, !1, null, "e764e12f", null, null);
const Cl = xl.exports,
  Pl = g.extend({
    components: {
      AxButton: E,
      AxChoice: Ur,
      AxDropdownButton: vt,
      AxList: Vt,
      AxListItem: qt,
    },
    props: {
      page: { type: Object, default: null },
      selected: { type: String, required: !0 },
    },
    computed: {
      enabled() {
        return !!this.page && this.page.adaptiveViews.length > 0;
      },
      currentText() {
        const t = this.viewsOptions.find((e) => e.value === this.selected);
        return t ? t.text : "";
      },
      viewsOptions() {
        if (!this.page) return [];
        const t = this.page.adaptiveViews,
          e = this.page.defaultAdaptiveView;
        return [
          { text: "Auto", value: "auto" },
          { ...wr(e), value: "default" },
          ...t.map(wr),
        ];
      },
      src() {
        return this.page ? this.page.location.split("/").pop() : void 0;
      },
    },
    methods: {
      async viewChanged(t) {
        t &&
          this.src &&
          (await this.$store.dispatch(
            new w(y.selectAdaptiveView, { view: t })
          ));
      },
    },
  });
function wr(t) {
  return { value: t.id || "", text: jl(t) };
}
function jl(t) {
  const { size: e, name: r } = t;
  let o = r;
  if (e) {
    const { width: s, height: n } = e;
    o += ` (${s || "any"} x ${n || "any"})`;
  }
  return o;
}
var kl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      e.enabled
        ? r(
            "div",
            { staticClass: "ax-project-toolbar-adaptive-views" },
            [
              r(
                "AxDropdownButton",
                {
                  staticClass: "d-flex h-100 align-items-stretch",
                  attrs: {
                    bottom: "",
                    overlay: "",
                    "close-on-content-click": !1,
                    "content-class": "view-options-content",
                  },
                  scopedSlots: e._u(
                    [
                      {
                        key: "activator",
                        fn: function () {
                          return [
                            r(
                              "AxButton",
                              {
                                staticClass: "toolbar-button",
                                attrs: {
                                  title: "Adaptive Views",
                                  color: "link",
                                },
                              },
                              [e._v(" " + e._s(e.currentText) + " ")]
                            ),
                          ];
                        },
                        proxy: !0,
                      },
                    ],
                    null,
                    !1,
                    1579053292
                  ),
                },
                [
                  r(
                    "AxList",
                    {
                      staticClass:
                        "options-list options-list__adaptive-views-options",
                    },
                    [
                      r("AxChoice", {
                        attrs: { value: e.selected, items: e.viewsOptions },
                        on: { input: e.viewChanged },
                        scopedSlots: e._u(
                          [
                            {
                              key: "default",
                              fn: function ({
                                type: o,
                                value: s,
                                text: n,
                                checked: a,
                                toggle: l,
                                index: i,
                                name: d,
                              }) {
                                return [
                                  r(
                                    "AxListItem",
                                    { staticClass: "options-list__item" },
                                    [
                                      r("label", { staticClass: "m-0 w-100" }, [
                                        r("input", {
                                          key: i,
                                          staticClass: "input-item",
                                          attrs: { type: o, name: d },
                                          domProps: { value: s, checked: a },
                                          on: { change: l },
                                        }),
                                        e._v(" " + e._s(n) + " "),
                                      ]),
                                    ]
                                  ),
                                ];
                              },
                            },
                          ],
                          null,
                          !1,
                          1178873456
                        ),
                      }),
                    ],
                    1
                  ),
                ],
                1
              ),
            ],
            1
          )
        : e._e()
    );
  },
  Al = [],
  Sl = v(Pl, kl, Al, !1, null, "e3476639", null, null);
const $l = Sl.exports,
  Tl = g.extend({
    props: {
      plugin: { type: Object, required: !0 },
      open: { type: Boolean, default: !1 },
    },
    methods: {
      toggle() {
        this.$nextTick(async () => {
          await this.$store.dispatch(
            new w(y.pluginToggle, {
              hide: this.open,
              id: this.plugin.id,
              gid: this.plugin.gid,
            })
          );
        });
      },
    },
  });
var Il = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        {
          staticClass: "ax-project-toolbar-plugin-toggle",
          class: { "plugin--open": e.open },
        },
        [e._t("default", null, { toggle: e.toggle })],
        2
      )
    );
  },
  Ol = [],
  El = v(Tl, Il, Ol, !1, null, "0cf93a62", null, null);
const Ye = El.exports,
  Dl = g.extend({
    components: { AxButton: E, AxIcon: H, AxProjectToolbarPluginToggle: Ye },
    props: {
      open: { type: Boolean, required: !0 },
      hasNotifications: { type: Boolean, required: !1, default: !1 },
      hasUnreadMentions: { type: Boolean, required: !1, default: !1 },
    },
    data: () => ({ plugin: x.discussions }),
  });
var Bl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-sitemap" },
        [
          r("AxProjectToolbarPluginToggle", {
            attrs: { plugin: e.plugin, open: e.open },
            scopedSlots: e._u([
              {
                key: "default",
                fn: function ({ toggle: o }) {
                  return [
                    r(
                      "AxButton",
                      {
                        staticClass: "toolbar-button",
                        attrs: { color: "link", title: "Comment" },
                        on: { click: o },
                      },
                      [
                        r(
                          "span",
                          { staticClass: "position-relative" },
                          [
                            r("AxIcon", { attrs: { name: "discussion" } }),
                            e.hasUnreadMentions || e.hasNotifications
                              ? r("AxIcon", {
                                  staticClass: "new-comments-indicator",
                                  class: {
                                    "unread-mentions-indicator":
                                      e.hasUnreadMentions,
                                  },
                                  attrs: { name: "dot" },
                                })
                              : e._e(),
                          ],
                          1
                        ),
                      ]
                    ),
                  ];
                },
              },
            ]),
          }),
        ],
        1
      )
    );
  },
  Ml = [],
  Rl = v(Dl, Bl, Ml, !1, null, "fd0418ea", null, null);
const Nl = Rl.exports,
  Fl = g.extend({
    components: { AxButton: E, AxIcon: H },
    computed: {
      overviewRoute() {
        const t = this.$route.params;
        return { name: T["project.overview"].name, params: t };
      },
    },
  });
var Ul = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-home" },
        [
          r(
            "AxButton",
            {
              staticClass: "toolbar-button h-100 d-flex align-items-center",
              attrs: {
                color: "link",
                title: "Back to Overview",
                to: e.overviewRoute,
              },
            },
            [
              r("AxIcon", {
                staticClass: "go-back-caret icon-margin",
                attrs: { name: "caret", rotate: "90deg" },
              }),
              r("AxIcon", { attrs: { name: "home" } }),
            ],
            1
          ),
        ],
        1
      )
    );
  },
  Ll = [],
  Hl = v(Fl, Ul, Ll, !1, null, "3c39ec9e", null, null);
const Vl = Hl.exports,
  ql = g.extend({
    components: { AxButton: E, AxProjectToolbarPluginToggle: Ye },
    props: {
      to: { type: [String, Object], default: void 0 },
      title: { type: String, default: "" },
      plugin: { type: Object, required: !0 },
    },
  });
var Wl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-mode" },
        [
          r(
            "AxProjectToolbarPluginToggle",
            { staticClass: "content", attrs: { plugin: e.plugin } },
            [
              r(
                "AxButton",
                {
                  staticClass: "toolbar-button align-self-center",
                  attrs: {
                    color: "link",
                    title: e.title,
                    to: e.to,
                    disabled: !e.to,
                  },
                },
                [
                  r(
                    "span",
                    { staticClass: "button-content" },
                    [e._t("default")],
                    2
                  ),
                ]
              ),
            ],
            1
          ),
        ],
        1
      )
    );
  },
  zl = [],
  Gl = v(ql, Wl, zl, !1, null, "f82113e3", null, null);
const io = Gl.exports,
  Xl = g.extend({
    components: { AxIcon: H, AxProjectToolbarMode: io },
    data: () => ({ plugin: x.handoff, AnalyticsClickEvents: We }),
    computed: {
      to() {
        const t = this.$route.params;
        if (t.screen) return { name: T["expo.inspect"].name, params: t };
      },
    },
  });
var Yl = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "AxProjectToolbarMode",
        {
          class: e.AnalyticsClickEvents.Inspect.eventClass,
          attrs: { plugin: e.plugin, to: e.to, title: "Inspect" },
        },
        [
          r("AxIcon", {
            staticClass: "icon-margin",
            attrs: { name: "compass" },
          }),
          r("span", { staticClass: "title" }, [e._v(" 检查 ")]),
        ],
        1
      )
    );
  },
  Zl = [],
  Kl = v(Xl, Yl, Zl, !1, null, "f6e4be22", null, null);
const Ql = Kl.exports,
  Jl = g.extend({
    components: { AxButton: E, AxIcon: H, AxProjectToolbarPluginToggle: Ye },
    props: { open: { type: Boolean, required: !0 } },
    data: () => ({ plugin: x.handoff }),
  });
var ec = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-sitemap" },
        [
          r("AxProjectToolbarPluginToggle", {
            attrs: { plugin: e.plugin, open: e.open },
            scopedSlots: e._u([
              {
                key: "default",
                fn: function ({ toggle: o }) {
                  return [
                    r(
                      "AxButton",
                      {
                        staticClass: "toolbar-button",
                        attrs: { color: "link", title: "Info" },
                        on: { click: o },
                      },
                      [r("AxIcon", { attrs: { name: "compass" } })],
                      1
                    ),
                  ];
                },
              },
            ]),
          }),
        ],
        1
      )
    );
  },
  tc = [],
  rc = v(Jl, ec, tc, !1, null, null, null, null);
const oc = rc.exports,
  sc = g.extend({
    components: { AxButton: E, AxIcon: H, AxProjectToolbarPluginToggle: Ye },
    props: { open: { type: Boolean, required: !0 } },
    data: () => ({ plugin: x.notes }),
  });
var nc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-sitemap" },
        [
          r("AxProjectToolbarPluginToggle", {
            attrs: { plugin: e.plugin, open: e.open },
            scopedSlots: e._u([
              {
                key: "default",
                fn: function ({ toggle: o }) {
                  return [
                    r(
                      "AxButton",
                      {
                        staticClass: "toolbar-button",
                        attrs: { color: "link", title: "Documentation" },
                        on: { click: o },
                      },
                      [r("AxIcon", { attrs: { name: "notes" } })],
                      1
                    ),
                  ];
                },
              },
            ]),
          }),
        ],
        1
      )
    );
  },
  ac = [],
  ic = v(sc, nc, ac, !1, null, null, null, null);
const lc = ic.exports,
  cc = g.extend({
    components: { AxIcon: H, AxProjectToolbarMode: io },
    data: () => ({ plugin: x.handoff, AnalyticsClickEvents: We }),
    computed: {
      to() {
        const t = this.$route.params;
        if (t.screen) return { name: T["expo.preview"].name, params: t };
      },
    },
  });
var dc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "AxProjectToolbarMode",
        {
          class: e.AnalyticsClickEvents.Preview.eventClass,
          attrs: { plugin: e.plugin, to: e.to, title: "Preview" },
        },
        [
          r("AxIcon", { staticClass: "icon-margin", attrs: { name: "eye" } }),
          e._v("预览 "),
        ],
        1
      )
    );
  },
  uc = [],
  pc = v(cc, dc, uc, !1, null, null, null, null);
const hc = pc.exports,
  mc = { type: Object, required: !0 },
  fc = g.extend({
    components: { AxDialog: Tr, AxProjectInfoShareLink: Hr, AxButton: E },
    props: {
      project: mc,
      page: { type: Object, default: null },
      zoomValue: { type: Number, default: 1 },
      scale: { type: String, default: Y.ViewAt100 },
      adaptiveView: { type: String, default: "" },
      commentsOpen: { type: Boolean, default: !1 },
      sitemapOpen: { type: Boolean, default: !1 },
      notesOpen: { type: Boolean, default: !1 },
      showCurrentConfigUrl: { type: Boolean, default: !0 },
      shareButtonColor: { type: String, default: "primary" },
      showHotspots: { type: Boolean, default: !1 },
      showNotes: { type: Boolean, default: !0 },
      showComments: { type: Boolean, default: !0 },
    },
    data() {
      return {
        dialog: !1,
        currentPageToggleDefaultValue: !0,
        useCurrentConfigurationToggleDefaultValue: !0,
        embededAccessCodeToggleDefaultValue: !!this.project.accessCode,
        AnalyticsClickEvents: We,
      };
    },
    computed: {
      isSubInstance() {
        return this.$store.getters.isSubInstance;
      },
      pageId() {
        return this.$route.params.screen;
      },
      isOverviewPage() {
        return this.$route.name === T["project.overview"].name;
      },
      workspace() {
        const t = this.$store.getters.findWorkspace(this.project.id);
        if (t) return t;
      },
      isDefaultWorkspace() {
        return this.workspace && this.workspace.isDefault;
      },
    },
    mounted() {
      if (et(window.location.href, "open-share-dialog") === "true") {
        this.dialog = !0;
        const e = { ...this.$route.query };
        delete e["open-share-dialog"], this.$router.replace({ query: e });
      }
    },
    methods: {
      open() {
        this.dialog = !0;
      },
      cancel() {
        this.dialog = !1;
      },
      onCurrentPageToggled(t) {
        this.currentPageToggleDefaultValue = t;
      },
      onUseCurrentConfigurationToggled(t) {
        this.useCurrentConfigurationToggleDefaultValue = t;
      },
      onEmbededAccessCodeToggled(t) {
        this.embededAccessCodeToggleDefaultValue = t;
      },
    },
  });
var gc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      e.project.viewOnly
        ? e._e()
        : r(
            "div",
            { staticClass: "share-button-container" },
            [
              e._t(
                "button",
                function () {
                  return [
                    r(
                      "AxButton",
                      {
                        staticClass: "share-button",
                        class: e.AnalyticsClickEvents.ProjectShare.eventClass,
                        attrs: { color: e.shareButtonColor, small: "" },
                        on: { click: e.open },
                      },
                      [e._v(" 分享 ")]
                    ),
                  ];
                },
                { open: e.open }
              ),
              e.dialog
                ? r(
                    "AxDialog",
                    {
                      attrs: {
                        lazy: "",
                        "dialog-class": "ax-project-share-dialog",
                        "content-class": "ax-project-share-content",
                      },
                      on: {
                        toggle: function (o) {
                          return e.$emit("toggle", o);
                        },
                      },
                      model: {
                        value: e.dialog,
                        callback: function (o) {
                          e.dialog = o;
                        },
                        expression: "dialog",
                      },
                    },
                    [
                      r("AxProjectInfoShareLink", {
                        attrs: {
                          project: e.project,
                          "page-id": e.pageId,
                          page: e.page,
                          "zoom-value": e.zoomValue,
                          scale: e.scale,
                          "comments-open": e.commentsOpen,
                          "sitemap-open": e.sitemapOpen,
                          "notes-open": e.notesOpen,
                          "show-public-link": !0,
                          "show-member-link": !e.isDefaultWorkspace,
                          "show-current-page-toggle": !e.isOverviewPage,
                          "show-current-config-url": e.showCurrentConfigUrl,
                          "current-page-toggle-default-value":
                            e.currentPageToggleDefaultValue,
                          "use-current-configuration-toggle-default-value":
                            e.useCurrentConfigurationToggleDefaultValue,
                          "embeded-access-code-toggle-default-value":
                            e.embededAccessCodeToggleDefaultValue,
                          "show-hotspots": e.showHotspots,
                          "show-notes": e.showNotes,
                          "show-comments": e.showComments,
                          "adaptive-view": e.adaptiveView,
                        },
                        on: {
                          currentPageToggle: e.onCurrentPageToggled,
                          useCurrentConfigurationToogle:
                            e.onUseCurrentConfigurationToggled,
                          embededAccessCodeToggle: e.onEmbededAccessCodeToggled,
                          cancel: e.cancel,
                        },
                      }),
                    ],
                    1
                  )
                : e._e(),
            ],
            2
          )
    );
  },
  vc = [],
  _c = v(fc, gc, vc, !1, null, "8fcb3862", null, null);
const bc = _c.exports,
  yc = g.extend({
    directives: { shortkey: Cs },
    props: { disableZoom: { type: Boolean, default: !1 } },
    data() {
      return { keyboard: ps };
    },
    methods: {
      async sendKeyboardEventToIframe(t) {
        await this.$store.dispatch(new w(y.keyboardEvent, t));
      },
    },
  });
var wc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        {
          directives: [
            { name: "show", rawName: "v-show", value: !1, expression: "false" },
          ],
        },
        [
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keydown.188.ignoreInput",
                  value: () => e.sendKeyboardEventToIframe(e.keyboard.comma),
                  expression: "() => sendKeyboardEventToIframe(keyboard.comma)",
                  arg: "keydown",
                  modifiers: { 188: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" 上一页 ")]
          ),
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keydown.190.ignoreInput",
                  value: () => e.sendKeyboardEventToIframe(e.keyboard.period),
                  expression:
                    "() => sendKeyboardEventToIframe(keyboard.period)",
                  arg: "keydown",
                  modifiers: { 190: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" 下一页 ")]
          ),
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keydown.space.ignoreInput",
                  value: () =>
                    e.sendKeyboardEventToIframe(e.keyboard.spaceBarDown),
                  expression:
                    "() => sendKeyboardEventToIframe(keyboard.spaceBarDown)",
                  arg: "keydown",
                  modifiers: { space: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" 拖动模式开启 ")]
          ),
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keyup.space.ignoreInput",
                  value: () =>
                    e.sendKeyboardEventToIframe(e.keyboard.spaceBarUp),
                  expression:
                    "() => sendKeyboardEventToIframe(keyboard.spaceBarUp)",
                  arg: "keyup",
                  modifiers: { space: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" Drag mode off ")]
          ),
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keydown.67.ignoreInput",
                  value: () => e.sendKeyboardEventToIframe(e.keyboard.comment),
                  expression:
                    "() => sendKeyboardEventToIframe(keyboard.comment)",
                  arg: "keydown",
                  modifiers: { 67: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" 切换注释模式 ")]
          ),
          r(
            "button",
            {
              directives: [
                {
                  name: "shortkey",
                  rawName: "v-shortkey:keydown.esc.ignoreInput",
                  value: () => e.sendKeyboardEventToIframe(e.keyboard.esc),
                  expression: "() => sendKeyboardEventToIframe(keyboard.esc)",
                  arg: "keydown",
                  modifiers: { esc: !0, ignoreInput: !0 },
                },
              ],
            },
            [e._v(" 退出注释模式 ")]
          ),
          e.disableZoom
            ? e._e()
            : [
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.107.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(e.keyboard.ctrlOrCmdPlus),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdPlus)",
                        arg: "keydown",
                        modifiers: {
                          107: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom In ")]
                ),
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.187.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(e.keyboard.ctrlOrCmdPlus),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdPlus)",
                        arg: "keydown",
                        modifiers: {
                          187: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom In ")]
                ),
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.109.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(
                            e.keyboard.ctrlOrCmdMinus
                          ),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdMinus)",
                        arg: "keydown",
                        modifiers: {
                          109: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom Out ")]
                ),
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.189.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(
                            e.keyboard.ctrlOrCmdMinus
                          ),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdMinus)",
                        arg: "keydown",
                        modifiers: {
                          189: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom Out ")]
                ),
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.96.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(e.keyboard.ctrlOrCmdZero),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdZero)",
                        arg: "keydown",
                        modifiers: {
                          96: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom 100% ")]
                ),
                r(
                  "button",
                  {
                    directives: [
                      {
                        name: "shortkey",
                        rawName:
                          "v-shortkey:keydown.48.ctrlOrCmd.ignoreInput.prevent",
                        value: () =>
                          e.sendKeyboardEventToIframe(e.keyboard.ctrlOrCmdZero),
                        expression:
                          "() => sendKeyboardEventToIframe(keyboard.ctrlOrCmdZero)",
                        arg: "keydown",
                        modifiers: {
                          48: !0,
                          ctrlOrCmd: !0,
                          ignoreInput: !0,
                          prevent: !0,
                        },
                      },
                    ],
                  },
                  [e._v(" Zoom 100% ")]
                ),
              ],
        ],
        2
      )
    );
  },
  xc = [],
  Cc = v(yc, wc, xc, !1, null, null, null, null);
const Pc = Cc.exports,
  jc = g.extend({
    metaInfo() {
      var t;
      return { title: hs((t = this.page) == null ? void 0 : t.pageName) };
    },
    components: { AxButton: E, AxIcon: H, AxProjectToolbarPluginToggle: Ye },
    props: {
      page: { type: Object, default: null },
      open: { type: Boolean, required: !0 },
    },
    data: () => ({ plugin: x.sitemap }),
  });
var kc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-sitemap" },
        [
          r("AxProjectToolbarPluginToggle", {
            attrs: { plugin: e.plugin, open: e.open },
            scopedSlots: e._u([
              {
                key: "default",
                fn: function ({ toggle: o }) {
                  return [
                    e.page
                      ? r(
                          "AxButton",
                          {
                            staticClass: "toolbar-button sitemap-button",
                            attrs: { color: "link", title: "Project Pages" },
                            on: { click: o },
                          },
                          [
                            r("AxIcon", {
                              staticClass: "icon-margin",
                              attrs: { name: "sitemap-panel" },
                            }),
                            e._v(" "),
                            r("span", { staticClass: "sitemap__page-name" }, [
                              e._v(" " + e._s(e.page.pageName) + " "),
                            ]),
                          ],
                          1
                        )
                      : e._e(),
                  ];
                },
              },
            ]),
          }),
        ],
        1
      )
    );
  },
  Ac = [],
  Sc = v(jc, kc, Ac, !1, null, "2febd8c6", null, null);
const $c = Sc.exports,
  de = { hotspots: "h", comments: "c", notes: "n" },
  Tc = g.extend({
    components: {
      AxButton: E,
      AxChoice: Ur,
      AxDropdownButton: vt,
      AxIcon: H,
      AxList: Vt,
      AxListItem: qt,
    },
    props: {
      showHotspots: { type: Boolean, default: !1 },
      hotspots: { type: Boolean, default: !0 },
      showComments: { type: Boolean, default: !0 },
      comments: { type: Boolean, default: !0 },
      showNotes: { type: Boolean, default: !0 },
      notes: { type: Boolean, default: !0 },
      scale: { type: String, default: Y.ViewAt100 },
      scaleDisabled: { type: Boolean, default: !1 },
      scaleHidden: { type: Boolean, default: !1 },
    },
    data() {
      return {
        scaleOptions: [
          { text: "默认比例", value: Y.ViewAt100 },
          { text: "缩放至宽度", value: Y.ScaleToWidth },
          { text: "缩放以适应", value: Y.ScaleToFit },
        ],
      };
    },
    computed: {
      overlayOptionsSelected() {
        const t = [];
        return (
          this.showHotspots && t.push(de.hotspots),
          this.showComments && t.push(de.comments),
          this.showNotes && t.push(de.notes),
          t
        );
      },
      overlayOptions() {
        const t = [];
        return (
          this.hotspots &&
            t.push({ text: "显示热点", value: de.hotspots }),
          this.comments &&
            t.push({ text: "显示评论", value: de.comments }),
          this.notes && t.push({ text: "显示笔记", value: de.notes }),
          t
        );
      },
      scaleOption() {
        return this.scale;
      },
      overlayOptionsClass() {
        return this.scaleHidden ? "single" : "";
      },
    },
    methods: {
      async overlayOptionsChanged(t) {
        const e = {
          hotspots: this.hotspots ? t.includes(de.hotspots) : void 0,
          comments: this.comments ? t.includes(de.comments) : void 0,
          notes: this.notes ? t.includes(de.notes) : void 0,
        };
        await this.$store.dispatch(new w(y.selectOverlayOption, e));
      },
      async scaleOptionChanged(t) {
        await this.$store.dispatch(new w(y.selectScaleOption, { scale: t }));
      },
    },
  });
var Ic = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        { staticClass: "ax-project-toolbar-view-options" },
        [
          r(
            "AxDropdownButton",
            {
              staticClass: "d-flex h-100 align-items-stretch",
              attrs: {
                overlay: "",
                "close-on-content-click": !1,
                "content-class": "view-options-content",
              },
              scopedSlots: e._u([
                {
                  key: "activator",
                  fn: function () {
                    return [
                      r(
                        "AxButton",
                        {
                          staticClass: "toolbar-button",
                          attrs: { title: "View Options", color: "link" },
                        },
                        [r("AxIcon", { attrs: { name: "settings-lg" } })],
                        1
                      ),
                    ];
                  },
                  proxy: !0,
                },
              ]),
            },
            [
              r(
                "AxList",
                {
                  directives: [
                    {
                      name: "show",
                      rawName: "v-show",
                      value: e.overlayOptions.length > 0,
                      expression: "overlayOptions.length > 0",
                    },
                  ],
                  staticClass: "options-list options-list__overlay-options",
                  class: e.overlayOptionsClass,
                },
                [
                  r("AxChoice", {
                    attrs: {
                      multiple: "",
                      value: e.overlayOptionsSelected,
                      items: e.overlayOptions,
                    },
                    on: {
                      input: function (o) {
                        return e.overlayOptionsChanged(o);
                      },
                    },
                    scopedSlots: e._u([
                      {
                        key: "default",
                        fn: function ({
                          type: o,
                          value: s,
                          text: n,
                          checked: a,
                          toggle: l,
                          index: i,
                        }) {
                          return [
                            r(
                              "AxListItem",
                              { staticClass: "options-list__item" },
                              [
                                r("label", { staticClass: "m-0 w-100" }, [
                                  r("input", {
                                    key: i,
                                    staticClass: "input-item",
                                    attrs: { type: o },
                                    domProps: { value: s, checked: a },
                                    on: { change: l },
                                  }),
                                  e._v(" " + e._s(n) + " "),
                                ]),
                              ]
                            ),
                          ];
                        },
                      },
                    ]),
                  }),
                ],
                1
              ),
              r(
                "AxList",
                {
                  directives: [
                    {
                      name: "show",
                      rawName: "v-show",
                      value: e.scaleOptions.length > 0 && !e.scaleHidden,
                      expression: "scaleOptions.length > 0 && !scaleHidden",
                    },
                  ],
                  staticClass: "options-list options-list__scale-options",
                  class: {
                    "options-list__scale-options--disabled": e.scaleDisabled,
                  },
                },
                [
                  r("AxChoice", {
                    attrs: { value: e.scaleOption, items: e.scaleOptions },
                    on: {
                      input: function (o) {
                        return e.scaleOptionChanged(o);
                      },
                    },
                    scopedSlots: e._u([
                      {
                        key: "default",
                        fn: function ({
                          type: o,
                          value: s,
                          text: n,
                          checked: a,
                          toggle: l,
                          index: i,
                          name: d,
                        }) {
                          return [
                            r(
                              "AxListItem",
                              { staticClass: "options-list__item" },
                              [
                                r("label", { staticClass: "m-0 w-100" }, [
                                  r("input", {
                                    key: i,
                                    staticClass: "input-item",
                                    attrs: {
                                      type: o,
                                      name: d,
                                      disabled: e.scaleDisabled,
                                    },
                                    domProps: { value: s, checked: a },
                                    on: { change: l },
                                  }),
                                  e._v(" " + e._s(n) + " "),
                                ]),
                              ]
                            ),
                          ];
                        },
                      },
                    ]),
                  }),
                  r(
                    "div",
                    {
                      directives: [
                        {
                          name: "show",
                          rawName: "v-show",
                          value: e.scaleDisabled && !e.scaleHidden,
                          expression: "scaleDisabled && !scaleHidden",
                        },
                      ],
                      staticClass: "scale-disabled-hint",
                    },
                    [
                      r("small", [
                        e._v("Scale is forced to 100% in Inspect Mode."),
                      ]),
                    ]
                  ),
                ],
                1
              ),
            ],
            1
          ),
        ],
        1
      )
    );
  },
  Oc = [],
  Ec = v(Tc, Ic, Oc, !1, null, "0f3b6a5d", null, null);
const Dc = Ec.exports,
  Bc = g.extend({
    components: {
      AxDropdownButton: vt,
      AxList: Vt,
      AxListItem: qt,
      AxIcon: H,
      AxButton: E,
    },
    props: {
      zoomValue: { type: Number, default: 1 },
      scale: { type: String, default: Y.ViewAt100 },
      scaleHidden: { type: Boolean, default: !1 },
    },
    data() {
      return {
        dropdownActive: !1,
        zoomValues: [0.25, 0.5, 0.75, 1, 1.5, 2, 2.5, 3, 4],
        scaleOptions: [
          { text: "默认比例", value: Y.ViewAt100 },
          { text: "缩放至宽度", value: Y.ScaleToWidth },
          { text: "缩放以适应", value: Y.ScaleToFit },
        ],
      };
    },
    computed: {
      scaleOption() {
        return this.scale;
      },
    },
    methods: {
      async clickHandler(t) {
        this.scaleHidden || (await this.scaleOptionChanged(Y.ZoomMode)),
          this.$emit("input", t),
          (this.dropdownActive = !1);
      },
      getPercent(t) {
        return `${Math.round(t * 100)}%`;
      },
      async scaleOptionChanged(t) {
        await this.$store.dispatch(new w(y.selectScaleOption, { scale: t })),
          (this.dropdownActive = !1);
      },
      dropdownToggled(t) {
        this.dropdownActive = t;
      },
    },
  });
var Mc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "AxDropdownButton",
        {
          staticClass: "d-flex toolbar-control",
          attrs: {
            overlay: "",
            "drop-max-height": "",
            "content-class": "ax-project-zoom-content",
            "close-on-content-click": !1,
            active: e.dropdownActive,
            "toggle-callback": e.dropdownToggled,
          },
          scopedSlots: e._u([
            {
              key: "activator",
              fn: function () {
                return [
                  r(
                    "AxButton",
                    {
                      staticClass: "toolbar-button",
                      attrs: { color: "link", title: "Zoom and Scale" },
                    },
                    [
                      r("span", [e._v(e._s(e.getPercent(e.zoomValue)))]),
                      r("AxIcon", {
                        staticClass: "icon-caret icon-margin--left",
                        attrs: { name: "caret" },
                      }),
                    ],
                    1
                  ),
                ];
              },
              proxy: !0,
            },
          ]),
        },
        [
          r(
            "AxList",
            { staticClass: "ax-project-zoom-list" },
            e._l(e.zoomValues, function (o) {
              return r(
                "AxListItem",
                { key: o, staticClass: "ax-project-zoom-list-item" },
                [
                  r(
                    "div",
                    {
                      on: {
                        click: function (s) {
                          return e.clickHandler(o);
                        },
                      },
                    },
                    [e._v(" " + e._s(e.getPercent(o)) + " ")]
                  ),
                ]
              );
            }),
            1
          ),
          r(
            "div",
            {
              directives: [
                {
                  name: "show",
                  rawName: "v-show",
                  value: e.scaleOptions.length > 0 && !e.scaleHidden,
                  expression: "scaleOptions.length > 0 && !scaleHidden",
                },
              ],
              staticClass: "ax-project-zoom-scale-list",
            },
            e._l(e.scaleOptions, function (o) {
              return r(
                "div",
                {
                  key: o.value,
                  staticClass: "ax-project-zoom-scale-list-item",
                  on: {
                    click: function (s) {
                      return e.scaleOptionChanged(o.value);
                    },
                  },
                },
                [
                  r(
                    "div",
                    {
                      staticClass: "radio-outer",
                      class: {
                        "radio-outer-active": o.value === e.scaleOption,
                      },
                    },
                    [
                      r("div", {
                        directives: [
                          {
                            name: "show",
                            rawName: "v-show",
                            value: o.value === e.scaleOption,
                            expression: "option.value === scaleOption",
                          },
                        ],
                        staticClass: "radio-fill",
                      }),
                    ]
                  ),
                  e._v(" " + e._s(o.text) + " "),
                ]
              );
            }),
            0
          ),
        ],
        1
      )
    );
  },
  Rc = [],
  Nc = v(Bc, Mc, Rc, !1, null, "b25a7304", null, null);
const Fc = Nc.exports,
  Uc = g.extend({
    components: {
      AxIframeListener: Xt,
      AxProjectToolbarAdaptiveViews: $l,
      AxProjectToolbarDiscussions: Nl,
      AxProjectToolbarHome: Vl,
      AxProjectToolbarInspect: Ql,
      AxProjectToolbarInspectToggle: oc,
      AxProjectToolbarNotes: lc,
      AxProjectToolbarPreview: hc,
      AxProjectToolbarShortkeys: Pc,
      AxProjectToolbarSitemap: $c,
      AxProjectToolbarViewOptions: Dc,
      AxProjectToolbarShare: bc,
      AxProjectToolbarZoom: Fc,
    },
    mixins: [Ut],
    props: {
      project: { type: Object, required: !0 },
      enableHotkeys: { type: Boolean, default: !0 },
      inspectMode: { type: Boolean, default: !1 },
      previewMode: { type: Boolean, default: !1 },
      currentComment: { type: String, default: void 0 },
    },
    data() {
      const t = et(window.location.href, "dp"),
        e = et(window.location.href, "fn"),
        r = et(window.location.href, "hi");
      return {
        enableHotkeysOverride: !0,
        page: null,
        adaptiveView: "",
        scale: Y.ViewAt100,
        savedScale: null,
        documentConfiguration: null,
        hotspots: !0,
        showHotspots: !!r,
        showNotes: !e,
        showComments: !t,
        pageZoom: 1,
        isPanZoomEnabled: !1,
        plugins: {
          sitemap: {
            id: x.sitemap.id,
            gid: x.sitemap.gid,
            open: !1,
            created: !1,
          },
          notes: { id: x.notes.id, gid: x.notes.gid, open: !1, created: !1 },
          discussions: {
            id: x.discussions.id,
            gid: x.discussions.gid,
            open: !1,
            created: !1,
          },
          handoff: {
            id: x.handoff.id,
            gid: x.handoff.gid,
            open: !1,
            created: !1,
            enabled: !1,
          },
        },
        messageCenterEventHandlers: {},
        navigatedToIssue: !1,
      };
    },
    computed: {
      computedPage() {
        if (this.isRpProject) return this.page;
        const t = this.$store.getters.iframeBridgeProps(M.Preview);
        if (this.$route.name === T["expo.preview"].name) {
          if (t) {
            const { iframeReady: e } = this.$store.getters.iframeBridgeProps(
              M.Preview
            );
            return e ? this.page : null;
          }
          return null;
        }
        return this.isBuildRoute ? null : this.page;
      },
      isBuildRoute() {
        return this.$route.name === T["expo.build"].name;
      },
      isRpProject() {
        return ft(this.project);
      },
      isRp10Project() {
        return ms({ project: this.project });
      },
      isSketchProject() {
        return ze(this.project);
      },
      showZoom() {
        return (
          (this.isSketchProject && this.inspectMode) || this.isRP10ZoomEnabled
        );
      },
      isRP10ZoomEnabled() {
        return this.isRp10Project && this.isPanZoomEnabled;
      },
      enableHotkeysComputed() {
        return this.enableHotkeysOverride && this.enableHotkeys;
      },
      iframes() {
        let t = [];
        const e = this.$store.state;
        return (
          (t = Object.entries(e.project.iframeBridgeProps).map(([r, o]) => ({
            id: r,
            iframe: o ? o.iframe : void 0,
          }))),
          t
        );
      },
      notesSidebar() {
        const t = this.documentConfiguration;
        return t ? t.showPageNotes || t.showAnnotationsSidebar : !1;
      },
      notes() {
        const t = this.documentConfiguration;
        return t ? t.showAnnotations : !1;
      },
      comments() {
        return this.plugins.discussions.created && this.project.feedbackEnabled;
      },
      notificationState() {
        return this.project.notificationState;
      },
      hasNewComments() {
        return !!this.project.notificationState.HasNewComments;
      },
      hasUnreadCommentsMentions() {
        return Or(this.project.notificationState) > 0;
      },
      updated() {
        return this.project.updated;
      },
      sitemapOpened() {
        return !!this.plugins.sitemap && this.plugins.sitemap.open;
      },
      commentsOpened() {
        return !!this.plugins.discussions && this.plugins.discussions.open;
      },
      notesOpened() {
        return !!this.plugins.notes && this.plugins.notes.open;
      },
    },
    watch: {
      async inspectMode(t) {
        if (this.isRpProject && !this.isRp10Project) {
          let { scale: e } = this;
          t
            ? ((this.savedScale = e), (e = Y.ViewAt100))
            : (e = this.savedScale),
            e &&
              (await this.$store.dispatch(
                new w(y.selectScaleOption, { scale: e })
              ));
        }
        await this.$store.dispatch(new w(y.resizePlayerContent));
      },
      async updated(t, e) {
        ((!t && e) || (t && e && !xo(t, e))) &&
          (await this.postReloadToIframe());
      },
      async notificationState(t) {
        await this.$store.dispatch(new w(y.updateNotificationState, t));
      },
      async $route(t, e) {
        const r = e.params.screen,
          o = t.params.screen;
        if (!(!!o && !!r && r !== o)) {
          const n = e.query.comment,
            a = t.query.comment;
          !!a &&
            !!n &&
            n !== a &&
            (await this.$store.dispatch(new w(y.selectPage, { pageId: o })));
        }
      },
    },
    created() {
      const t = {
        setState: (e) => {
          e.key === "page.data" &&
            e.value &&
            e.value.shortId &&
            this.setPage(e.value);
        },
        switchAdaptiveView: (e) => {
          this.adaptiveView = e.view;
        },
        setAdaptiveViewForSize: (e) => {
          this.adaptiveView = "auto";
        },
        setScale: (e) => {
          this.setScale(e);
        },
        getScale: (e) => {
          this.setScale(e);
        },
        cloud_ScaleValueChanged: (e) => {
          this.setScale(e);
        },
        pluginVisibleChanged: (e, r) => {
          this.pluginVisibilityChanged(e, r);
        },
        highlightInteractive: (e) => {
          this.showHotspots = e;
        },
        annotationToggle: (e) => {
          this.showNotes = e;
        },
        commentsToggle: (e) => {
          this.showComments = e;
        },
        cloud_updateHasNewComments: (e) => {
          const r = {
            HasNewComments: e.hasNewComments,
            UnreadMentionsCount: {},
          };
          e.unreadIssueMentionsCount !== void 0 &&
            (r.UnreadMentionsCount[er.Issue] = e.unreadIssueMentionsCount),
            e.unreadCommentMentionsCount !== void 0 &&
              (r.UnreadMentionsCount[er.IssueComment] =
                e.unreadCommentMentionsCount),
            this.$store.commit(new Dr(this.project.id, r));
        },
        cloud_feedbackLoaded: async () => {
          await this.syncStateWithUrlParams(),
            await this.navigateToCommentIfRequired();
        },
        cloud_SetPageScale: (e) => {
          this.pageZoom = e.scale;
        },
        cloud_copyCloudCommentLink: (e) => {
          this.copyCloudCommentLink(e.screen, e.issueCode);
        },
      };
      this.messageCenterEventHandlers = t;
    },
    methods: {
      async onToolbarClicked() {
        await this.$store.dispatch(new w(y.reset));
      },
      handleShareDialogToggle(t) {
        this.toggleHotkeys(!t);
      },
      async syncStateWithUrlParams() {
        let t = !1;
        this.$route.query.comments &&
          ((this.plugins.discussions.open = !0), (t = !0)),
          this.$route.query.sitemap &&
            ((this.plugins.sitemap.open = !0), (t = !0)),
          this.$route.query.notes && ((this.plugins.notes.open = !0), (t = !0)),
          t && (await this.syncOpenedPlugins()),
          this.$route.query.scale &&
            (await this.$store.dispatch(
              new w(y.selectScaleOption, { scale: this.$route.query.scale })
            ));
      },
      async postReloadToIframe() {
        await this.$store.dispatch(new w(y.reload));
      },
      toggleHotkeys(t) {
        this.enableHotkeysOverride = t;
      },
      async onMessage(t, { key: e, data: r }) {
        e === ne.ready
          ? await this.postReady(t)
          : e === ne.playerMessageCenterEvent
          ? this.handleMessageCenterEvent(r, t)
          : e === ne.inspectorToggled
          ? (this.plugins.handoff.enabled = r.enabled)
          : e === ne.documentConfiguration
          ? (this.documentConfiguration = r)
          : e === ne.updateIsPanZoomEnabled
          ? (this.isPanZoomEnabled = r)
          : e === ne.pluginCreated
          ? await this.pluginCreated(r, t)
          : e === ne.previewGenerationComplete ||
            (e === fs.starting && window.location.reload());
      },
      async postReady(t) {
        if ((this.$store.commit(new gs(t)), t === M.Preview)) {
          let e = this.$store.getters.currentProject;
          e ||
            (await this.$store.dispatch(new Ht(this.project.id)),
            (e = this.$store.getters.currentProject));
          const r = {
            expoProject: e,
            isSitemapOpened: this.plugins.sitemap.open,
          };
          await this.$store.dispatch(new w(y.generateLocalExpoPreview, r, t));
        }
        await this.$store.dispatch(new w(y.getPageData, void 0, t)),
          await this.$store.dispatch(
            new w(y.getDocumentConfiguration, void 0, t)
          ),
          this.isRp10Project &&
            (await this.$store.dispatch(
              new w(y.triggerUpdateIsPanZoomEnabled)
            ));
      },
      handleMessageCenterEvent({ message: t, data: e }, r) {
        if (this.messageCenterEventHandlers) {
          const o = this.messageCenterEventHandlers[t];
          o && o(e, r);
        }
      },
      async pluginVisibilityChanged({ id: t, visible: e }, r) {
        const o = this.getPluginById(t);
        o &&
          ((o.open = e),
          !e &&
            o.id === x.discussions.id &&
            (await this.$store.dispatch(new w(y.hidePinsOverlay))));
      },
      async pluginCreated({ gid: t }, e) {
        const r = this.getPluginByGid(t);
        r &&
          ((r.created = !0),
          this.$store.getters.totalIframeBridgesReady > 1 &&
            r &&
            r.open &&
            (await this.$store.dispatch(
              new w(y.pluginToggle, { hide: !r.open, id: r.id, gid: r.gid }, e)
            )));
      },
      getPluginByGid(t) {
        return Object.values(this.plugins).find((e) => e.gid === t);
      },
      getPluginById(t) {
        return Object.values(this.plugins).find((e) => e.id === t);
      },
      setPage(t) {
        this.page = t;
        const { shortId: e } = t;
        e && this.$emit("page-changed", e);
      },
      setScale(t) {
        if (t.scale !== void 0) {
          const e = typeof t.scale == "number" ? t.scale.toString() : t.scale;
          this.scale = e;
        }
      },
      async syncOpenedPlugins(t) {
        const e = Object.values(this.plugins)
          .filter((r) => r.created)
          .map(
            (r) =>
              new w(y.pluginToggle, { hide: !r.open, id: r.id, gid: r.gid }, t)
          );
        await Promise.all(e.map((r) => this.$store.dispatch(r)));
      },
      async navigateToCommentIfRequired() {
        if (
          !(!(this.previewMode || this.inspectMode) || !this.comments) &&
          this.currentComment
        ) {
          if (!this.plugins.discussions.open) {
            const t = {
              hide: !1,
              id: x.discussions.id,
              gid: x.discussions.gid,
            };
            await this.$store.dispatch(new w(y.pluginToggle, t));
          }
          if (this.currentComment !== "new" && !this.navigatedToIssue) {
            await this.$store.dispatch(
              new w(y.navigateToIssue, { issueId: this.currentComment })
            ),
              (this.navigatedToIssue = !0);
            const t = { ...this.$route.query };
            delete t.comment, this.$router.replace({ query: t });
          }
        }
      },
      async pageZoomChanged(t) {
        await this.$store.dispatch(new w(y.setZoom, t * 100)),
          (this.pageZoom = t);
      },
      async copyCloudCommentLink(t, e) {
        const { name: r } = this.$route,
          { shortcut: o } = this.$route.params;
        let s = window.location.href;
        if (r) {
          const n = this.$router.resolve({
            name: r,
            params: { screen: t, shortcut: o },
            query: { comment: e },
          });
          s = `${window.location.origin}${n.href}`;
        }
        await vs(s);
      },
    },
  });
var Lc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r(
        "div",
        {
          staticClass: "ax-project-toolbar",
          on: { click: e.onToolbarClicked },
        },
        [
          e._l(e.iframes, function (o) {
            return r("AxIframeListener", {
              key: o.id,
              attrs: { iframe: o.iframe },
              on: {
                message: function (s) {
                  return e.onMessage(o.id, s);
                },
              },
            });
          }),
          e.enableHotkeysComputed
            ? r("AxProjectToolbarShortkeys", {
                attrs: { "disable-zoom": !e.showZoom },
              })
            : e._e(),
          r("div", { staticClass: "w-100 d-flex align-items-stretch" }, [
            r(
              "div",
              { staticClass: "ax-project-toolbar__container desktop-app-drag" },
              [
                r(
                  "div",
                  {
                    staticClass:
                      "d-flex align-items-center justify-content-start ax-project-toolbar__left",
                  },
                  [
                    r("AxProjectToolbarHome", {
                      staticClass: "toolbar-control toolbar-home",
                    }),
                    e.plugins.sitemap.created
                      ? r("AxProjectToolbarSitemap", {
                          staticClass: "toolbar-control",
                          attrs: {
                            page: e.computedPage,
                            open: e.plugins.sitemap.open,
                          },
                        })
                      : e._e(),
                    r("AxProjectToolbarAdaptiveViews", {
                      directives: [
                        {
                          name: "show",
                          rawName: "v-show",
                          value: e.page,
                          expression: "page",
                        },
                      ],
                      staticClass: "toolbar-control",
                      attrs: { page: e.page, selected: e.adaptiveView },
                    }),
                  ],
                  1
                ),
                r(
                  "div",
                  {
                    staticClass:
                      "d-flex align-items-center ax-project-toolbar__center",
                  },
                  [
                    r("AxProjectToolbarPreview", {
                      directives: [
                        {
                          name: "show",
                          rawName: "v-show",
                          value: !e.isBuildRoute,
                          expression: "!isBuildRoute",
                        },
                      ],
                      staticClass: "toolbar-control",
                    }),
                    r("AxProjectToolbarInspect", {
                      directives: [
                        {
                          name: "show",
                          rawName: "v-show",
                          value: !e.isBuildRoute,
                          expression: "!isBuildRoute",
                        },
                      ],
                      staticClass: "toolbar-control",
                    }),
                  ],
                  1
                ),
                r(
                  "div",
                  {
                    staticClass:
                      "d-flex align-items-center justify-content-end ax-project-toolbar__right",
                  },
                  [
                    e.showZoom
                      ? r("AxProjectToolbarZoom", {
                          attrs: {
                            "zoom-value": e.pageZoom,
                            "scale-hidden": !e.isRp10Project,
                            scale: e.scale,
                          },
                          on: { input: e.pageZoomChanged },
                        })
                      : e._e(),
                    e.project
                      ? r("AxProjectToolbarShare", {
                          attrs: {
                            project: e.project,
                            page: e.page,
                            "zoom-value": e.pageZoom,
                            scale: e.scale,
                            "comments-open": e.commentsOpened,
                            "sitemap-open": e.sitemapOpened,
                            "notes-open": e.notesOpened,
                            "show-hotspots": e.showHotspots,
                            "show-notes": e.showNotes,
                            "show-comments": e.showComments,
                            "adaptive-view": e.adaptiveView,
                          },
                          on: { toggle: e.handleShareDialogToggle },
                        })
                      : e._e(),
                    e.plugins.handoff.created && e.plugins.handoff.enabled
                      ? r("AxProjectToolbarInspectToggle", {
                          staticClass: "toolbar-control",
                          attrs: { open: e.plugins.handoff.open },
                        })
                      : e._e(),
                    e.plugins.notes.created && e.notesSidebar
                      ? r("AxProjectToolbarNotes", {
                          directives: [
                            {
                              name: "show",
                              rawName: "v-show",
                              value: e.previewMode || e.inspectMode,
                              expression: "previewMode || inspectMode",
                            },
                          ],
                          staticClass: "toolbar-control",
                          attrs: { open: e.plugins.notes.open },
                        })
                      : e._e(),
                    e.comments
                      ? r("AxProjectToolbarDiscussions", {
                          directives: [
                            {
                              name: "show",
                              rawName: "v-show",
                              value: e.previewMode || e.inspectMode,
                              expression: "previewMode || inspectMode",
                            },
                          ],
                          staticClass: "toolbar-control",
                          attrs: {
                            open: e.plugins.discussions.open,
                            "has-notifications": e.hasNewComments,
                            "has-unread-mentions": e.hasUnreadCommentsMentions,
                          },
                        })
                      : e._e(),
                    r("AxProjectToolbarViewOptions", {
                      directives: [
                        {
                          name: "show",
                          rawName: "v-show",
                          value: e.previewMode || e.inspectMode,
                          expression: "previewMode || inspectMode",
                        },
                      ],
                      staticClass: "toolbar-control",
                      attrs: {
                        "scale-disabled": e.inspectMode,
                        "scale-hidden":
                          e.isSketchProject || e.isRP10ZoomEnabled,
                        scale: e.scale,
                        hotspots: e.hotspots,
                        notes: e.notes,
                        comments: e.comments,
                        "show-hotspots": e.showHotspots,
                        "show-notes": e.showNotes,
                        "show-comments": e.showComments,
                      },
                    }),
                  ],
                  1
                ),
              ]
            ),
          ]),
        ],
        2
      )
    );
  },
  Hc = [],
  Vc = v(Uc, Lc, Hc, !1, null, "9590de7b", null, null);
const qc = Vc.exports;
var Nt = ((t) => (
  (t[(t.Overview = 0)] = "Overview"),
  (t[(t.Preview = 1)] = "Preview"),
  (t[(t.Build = 2)] = "Build"),
  (t[(t.Inspect = 3)] = "Inspect"),
  t
))(Nt || {});
const Wc = { type: Object, required: !0, validator: (t) => Er(t) },
  zc = (t) => (ze(t) ? 1 : 3),
  Gc = (t) => (ze(t) ? 1 : 3),
  Xc = {
    [T["project.overview"].name]: () => 0,
    [T["expo.preview"].name]: zc,
    [T["expo.build"].name]: () => 2,
    [T["expo.build.all"].name]: () => 2,
    [T["expo.inspect"].name]: Gc,
  },
  Yc = g.extend({
    components: {
      AxProjectToolbar: qc,
      Overview: il,
      Build: $s,
      Preview: Cl,
      Inspect: gl,
    },
    props: { project: Wc },
    data() {
      const t = _s(),
        e = {},
        o = Object.values(Nt)
          .filter((s) => typeof s == "number")
          .reduce((s, n) => ((s[n] = !1), s), e);
      return {
        Views: Nt,
        onceShown: o,
        page: this.$route.params.screen,
        isMobile: t,
      };
    },
    computed: {
      showToolbar() {
        return this.view !== 0;
      },
      view() {
        const t = this.$route.name;
        return t ? this.resolveView(t) : 0;
      },
      screen() {
        return this.$route.params.screen;
      },
      inspectMode() {
        return this.$route.name === T["expo.inspect"].name;
      },
      previewMode() {
        return this.$route.name === T["expo.preview"].name;
      },
      currentComment() {
        return this.$route.query.comment;
      },
    },
    watch: {
      view: {
        handler(t) {
          this.onceShown[t] = !0;
          const e = t !== 0 && t !== 1;
          document.body.classList.toggle("in-frame-prototype", e);
        },
        immediate: !0,
      },
    },
    methods: {
      resolveView(t) {
        return Xc[t](this.project);
      },
      async pageChanged(t) {
        (this.page = t),
          this.screen !== t &&
            (await this.$router.replace({
              params: { ...this.$route.params, screen: t },
              query: this.$route.query,
            }));
      },
    },
  });
var Zc = function () {
    var e = this,
      r = e._self._c;
    return (
      e._self._setupProxy,
      r("div", { staticClass: "ax-project d-flex flex-column" }, [
        r("div", { staticClass: "row" }, [
          r(
            "div",
            { staticClass: "flex-grow-0 g-0 h-100 w-100" },
            [
              r(
                "Transition",
                { attrs: { name: "toolbar-slide-up" } },
                [
                  e.isMobile
                    ? e._e()
                    : r("AxProjectToolbar", {
                        directives: [
                          {
                            name: "show",
                            rawName: "v-show",
                            value: e.showToolbar,
                            expression: "showToolbar",
                          },
                        ],
                        attrs: {
                          "enable-hotkeys": e.showToolbar,
                          project: e.project,
                          "inspect-mode": e.inspectMode,
                          "preview-mode": e.previewMode,
                          "current-comment": e.currentComment,
                        },
                        on: { "page-changed": e.pageChanged },
                      }),
                ],
                1
              ),
            ],
            1
          ),
        ]),
        r("div", { staticClass: "row ax-project__main" }, [
          r(
            "div",
            {
              directives: [
                {
                  name: "show",
                  rawName: "v-show",
                  value: e.view === e.Views.Overview,
                  expression: "view === Views.Overview",
                },
              ],
              staticClass: "col-12 h-100",
            },
            [
              r(
                "KeepAlive",
                [
                  e.view === e.Views.Overview
                    ? r("Overview", { attrs: { project: e.project } })
                    : e._e(),
                ],
                1
              ),
            ],
            1
          ),
          r(
            "div",
            {
              directives: [
                {
                  name: "show",
                  rawName: "v-show",
                  value: e.view !== e.Views.Overview,
                  expression: "view !== Views.Overview",
                },
              ],
              staticClass: "w-100 g-0 ax-project__views",
            },
            [
              e.onceShown[e.Views.Build]
                ? r("Build", {
                    directives: [
                      {
                        name: "show",
                        rawName: "v-show",
                        value: e.view === e.Views.Build,
                        expression: "view === Views.Build",
                      },
                    ],
                    attrs: { "is-active": e.view === e.Views.Build },
                  })
                : e._e(),
              e.onceShown[e.Views.Preview]
                ? r("Preview", {
                    directives: [
                      {
                        name: "show",
                        rawName: "v-show",
                        value: e.view === e.Views.Preview,
                        expression: "view === Views.Preview",
                      },
                    ],
                    attrs: {
                      "is-active": e.view === e.Views.Preview,
                      screen: e.screen,
                      page: e.page,
                      "preview-mode": e.previewMode,
                      "inspect-mode": e.inspectMode,
                      project: e.project,
                    },
                  })
                : e._e(),
              e.onceShown[e.Views.Inspect]
                ? r("Inspect", {
                    directives: [
                      {
                        name: "show",
                        rawName: "v-show",
                        value: e.view === e.Views.Inspect,
                        expression: "view === Views.Inspect",
                      },
                    ],
                    attrs: {
                      "is-active": e.view === e.Views.Inspect,
                      screen: e.screen,
                      page: e.page,
                      "inspect-mode": e.inspectMode,
                    },
                  })
                : e._e(),
            ],
            1
          ),
        ]),
      ])
    );
  },
  Kc = [],
  Qc = v(Yc, Zc, Kc, !1, null, "02d5787c", null, null);
const Jc = Qc.exports,
  ad = Object.freeze(
    Object.defineProperty(
      { __proto__: null, default: Jc },
      Symbol.toStringTag,
      { value: "Module" }
    )
  );
export { Ni as A, ad as E, _l as V, Ei as a, Fa as t };
